diff --git a/lam/pwa_worker.js b/lam/pwa_worker.js new file mode 100644 index 00000000..2127b8ae --- /dev/null +++ b/lam/pwa_worker.js @@ -0,0 +1,48 @@ +/** + + This code is part of LDAP Account Manager (http://www.ldap-account-manager.org/) + Copyright (C) 2019 Roland Gruber + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +*/ + +const CACHE = "lam"; + +self.addEventListener("install", function (event) { + event.waitUntil( + caches.open(CACHE).then(function (cache) { + console.log("LAM PWA installed"); + return true; + }) + ); +}); + +self.addEventListener("fetch", function (event) { + if (event.request.method !== "GET") { + return; + } + event.respondWith( + fetch(event.request).catch(function (error) { + if (event.request.destination !== "document" || + event.request.mode !== "navigate") { + return; + } + console.error("Network request failed: " + error); + return; + }) + ); +}); + diff --git a/lam/templates/lib/500_lam.js b/lam/templates/lib/500_lam.js index daad80d6..df857cd1 100644 --- a/lam/templates/lib/500_lam.js +++ b/lam/templates/lib/500_lam.js @@ -1174,3 +1174,17 @@ jQuery(document).ready(function() { window.lam.html.activateLightboxes(); window.lam.html.preventEnter(); }); + +/** + * Setup service worker + */ +if ("serviceWorker" in navigator) { + if (!navigator.serviceWorker.controller) { + var basePath = document.currentScript.src; + basePath = basePath.replace(/\/[^/]+\.js/gi, ''); + var workerJS = basePath + '/../../pwa_worker.js'; + navigator.serviceWorker.register(workerJS, { + scope : basePath + "../../" + }); + } +}