forked from trent_larson/crowd-funder-for-time-pwa
enhance service-worker logging, allow for filtered-push test
This commit is contained in:
@@ -4,28 +4,43 @@ importScripts(
|
||||
"https://storage.googleapis.com/workbox-cdn/releases/6.4.1/workbox-sw.js",
|
||||
);
|
||||
|
||||
self.addEventListener("install", (event) => {
|
||||
console.log("Service worker got install. Importing scripts...", event);
|
||||
importScripts(
|
||||
function logConsoleAndDb(message, arg1, arg2) {
|
||||
// in chrome://serviceworker-internals note that the arg1 and arg2 here will show as "[object Object]" in that page but will show as expandable objects in the console
|
||||
console.log(`${new Date().toISOString()} ${message}`, arg1, arg2);
|
||||
if (self.appendDailyLog) {
|
||||
let fullMessage = `${new Date().toISOString()} ${message}`;
|
||||
if (arg1) {
|
||||
fullMessage += `\n${JSON.stringify(arg1)}`;
|
||||
}
|
||||
if (arg2) {
|
||||
fullMessage += `\n${JSON.stringify(arg2)}`;
|
||||
}
|
||||
self.appendDailyLog(fullMessage);
|
||||
} else {
|
||||
// sometimes we get the error: "Uncaught TypeError: self.appendDailyLog is not a function"
|
||||
console.log("Not logging to DB because self.appendDailyLog doesn't exist.");
|
||||
}
|
||||
}
|
||||
|
||||
self.addEventListener("install", async (event) => {
|
||||
console.log("Service worker got install event. Importing scripts...", event);
|
||||
await importScripts(
|
||||
"safari-notifications.js",
|
||||
"nacl.js",
|
||||
"noble-curves.js",
|
||||
"noble-hashes.js",
|
||||
);
|
||||
console.log("Service worker imported scripts.");
|
||||
// this should now be available
|
||||
logConsoleAndDb("Service worker imported all scripts.");
|
||||
});
|
||||
|
||||
function logConsoleAndDb(message, arg1, arg2) {
|
||||
console.log(`${new Date().toISOString()} ${message}`, arg1, arg2);
|
||||
let fullMessage = `${new Date().toISOString()} ${message}`;
|
||||
if (arg1) {
|
||||
fullMessage += `\n${JSON.stringify(arg1)}`;
|
||||
}
|
||||
if (arg2) {
|
||||
fullMessage += `\n${JSON.stringify(arg2)}`;
|
||||
}
|
||||
self.appendDailyLog(fullMessage);
|
||||
}
|
||||
self.addEventListener("activate", (event) => {
|
||||
logConsoleAndDb("Service worker is activating...", event);
|
||||
// see https://developer.mozilla.org/en-US/docs/Web/API/Clients/claim
|
||||
// and https://web.dev/articles/service-worker-lifecycle#clientsclaim
|
||||
event.waitUntil(clients.claim());
|
||||
logConsoleAndDb("Service worker is activated.");
|
||||
});
|
||||
|
||||
self.addEventListener("push", function (event) {
|
||||
let text = null;
|
||||
@@ -45,18 +60,27 @@ self.addEventListener("push", function (event) {
|
||||
}
|
||||
}
|
||||
|
||||
// This is a special value that tells the service worker that it's a daily update.
|
||||
const DAILY_UPDATE_TITLE = "DAILY_UPDATE";
|
||||
|
||||
// This is a special value that tells the service worker to send a direct notification to the device, skipping filters.
|
||||
// This is shared with the notification-test code and should be a constant. Look for the same name in HelpNotificationsView.vue
|
||||
// Use something other than "Daily Update" https://gitea.anomalistdesign.com/trent_larson/py-push-server/src/commit/3c0e196c11bc98060ec5934e99e7dbd591b5da4d/app.py#L213
|
||||
const DIRECT_PUSH_TITLE = "DIRECT_NOTIFICATION";
|
||||
|
||||
let title = "Generic Notification";
|
||||
let title;
|
||||
let message = "Got some empty message.";
|
||||
if (payload && payload.title == DIRECT_PUSH_TITLE) {
|
||||
// skip any search logic and show the message directly
|
||||
title = "Direct Message";
|
||||
title = "Direct Notification";
|
||||
message = payload.message || "No details were provided.";
|
||||
} else {
|
||||
title = payload && payload.title ? payload.title : "Note";
|
||||
// any other title will run through regular filtering logic
|
||||
if (payload && payload.title === DAILY_UPDATE_TITLE) {
|
||||
title = "Daily Update";
|
||||
} else {
|
||||
title = payload.title || "Update";
|
||||
}
|
||||
message = await self.getNotificationCount();
|
||||
}
|
||||
if (message) {
|
||||
@@ -86,14 +110,6 @@ self.addEventListener("message", (event) => {
|
||||
logConsoleAndDb("Service worker posted a message.");
|
||||
});
|
||||
|
||||
self.addEventListener("activate", (event) => {
|
||||
logConsoleAndDb("Service worker activating...", event);
|
||||
// see https://developer.mozilla.org/en-US/docs/Web/API/Clients/claim
|
||||
// and https://web.dev/articles/service-worker-lifecycle#clientsclaim
|
||||
event.waitUntil(clients.claim());
|
||||
logConsoleAndDb("Service worker is activated.");
|
||||
});
|
||||
|
||||
self.addEventListener("fetch", (event) => {
|
||||
logConsoleAndDb("Service worker got fetch event.", event);
|
||||
});
|
||||
|
||||
@@ -565,5 +565,6 @@ async function getNotificationCount() {
|
||||
return result;
|
||||
}
|
||||
|
||||
self.appendDailyLog = appendDailyLog;
|
||||
self.getNotificationCount = getNotificationCount;
|
||||
self.decodeBase64 = decodeBase64;
|
||||
|
||||
Reference in New Issue
Block a user