web-humas-fe/public/sw.js

130 lines
3.6 KiB
JavaScript
Raw Normal View History

/**
* Copyright 2018 Google Inc. All Rights Reserved.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// If the loader is already loaded, just stop.
if (!self.define) {
let registry = {};
// Used for `eval` and `importScripts` where we can't get script URL by other means.
// In both cases, it's safe to use a global var because those functions are synchronous.
let nextDefineUri;
const singleRequire = (uri, parentUri) => {
uri = new URL(uri + ".js", parentUri).href;
2025-04-24 09:26:01 +00:00
return (
registry[uri] ||
new Promise((resolve) => {
if ("document" in self) {
const script = document.createElement("script");
script.src = uri;
script.onload = resolve;
document.head.appendChild(script);
} else {
nextDefineUri = uri;
importScripts(uri);
resolve();
}
}).then(() => {
let promise = registry[uri];
if (!promise) {
throw new Error(`Module ${uri} didnt register its module`);
}
return promise;
})
);
};
self.define = (depsNames, factory) => {
2025-04-24 09:26:01 +00:00
const uri =
nextDefineUri ||
("document" in self ? document.currentScript.src : "") ||
location.href;
if (registry[uri]) {
// Module is already loading or loaded.
return;
}
let exports = {};
2025-04-24 09:26:01 +00:00
const require = (depUri) => singleRequire(depUri, uri);
const specialDeps = {
module: { uri },
exports,
2025-04-24 09:26:01 +00:00
require,
};
2025-04-24 09:26:01 +00:00
registry[uri] = Promise.all(
depsNames.map((depName) => specialDeps[depName] || require(depName))
).then((deps) => {
factory(...deps);
return exports;
});
};
}
2025-04-24 09:26:01 +00:00
define(["./workbox-e43f5367"], function (workbox) {
"use strict";
importScripts();
self.skipWaiting();
workbox.clientsClaim();
2025-04-24 09:26:01 +00:00
workbox.registerRoute(
"/",
new workbox.NetworkFirst({
cacheName: "start-url",
plugins: [
{
cacheWillUpdate: async ({ request, response, event, state }) => {
if (response && response.type === "opaqueredirect") {
return new Response(response.body, {
status: 200,
statusText: "OK",
headers: response.headers,
});
}
return response;
},
},
],
}),
"GET"
);
workbox.registerRoute(
/.*/i,
new workbox.NetworkOnly({
cacheName: "dev",
plugins: [],
}),
"GET"
);
});
self.addEventListener("push", function (event) {
if (event.data) {
const data = event.data.json();
const options = {
body: data.body,
icon: data.icon || "/divhumas.png",
badge: "/divhumas.png",
vibrate: [100, 50, 100],
data: {
dateOfArrival: Date.now(),
primaryKey: "2",
},
};
event.waitUntil(self.registration.showNotification(data.title, options));
}
});
2025-04-24 09:26:01 +00:00
self.addEventListener("notificationclick", function (event) {
console.log("Notification click received.");
event.notification.close();
event.waitUntil(clients.openWindow("<https://layananpemerintahri.com>"));
2025-04-24 09:26:01 +00:00
});