service worker

This commit is contained in:
Roland Gruber 2019-05-20 16:30:12 +02:00
parent ae511610ec
commit c79170a34f
2 changed files with 62 additions and 0 deletions

48
lam/pwa_worker.js Normal file
View File

@ -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;
})
);
});

View File

@ -1174,3 +1174,17 @@ jQuery(document).ready(function() {
window.lam.html.activateLightboxes(); window.lam.html.activateLightboxes();
window.lam.html.preventEnter(); 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 + "../../"
});
}
}