Web Push reminders for tasks and events (Settings -> Reminders)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
a0f1efc4ef
commit
c1f4a220f9
10 files changed
+426
-9
No files matched your search
+16
-1
@@ -1,5 +1,5 @@
|
||||
// App-shell cache only; Seafile/API traffic always goes to the network.
|
||||
const CACHE = 'hub-v7';
|
||||
const CACHE = 'hub-v8';
|
||||
const SHELL = ['/icon.svg', '/manifest.webmanifest', '/icons/icon-192.png', '/icons/apple-touch-icon.png'];
|
||||
|
||||
// Install: keep the icons, and (when signed in) the page itself with the scripts and styles it names, so the app opens offline.
|
||||
@@ -29,3 +29,18 @@ self.addEventListener('fetch', e => {
|
||||
return r;
|
||||
}).catch(() => caches.match(e.request)));
|
||||
});
|
||||
|
||||
// Push reminders (see push.js on the server)
|
||||
self.addEventListener('push', e => {
|
||||
let d = {}; try { d = e.data.json(); } catch {}
|
||||
e.waitUntil(self.registration.showNotification(d.title || 'NE Hub', { body: d.body || '', icon: '/icons/icon-192.png', badge: '/icons/icon-192.png', tag: d.tag, data: { url: d.url || '#/home' } }));
|
||||
});
|
||||
self.addEventListener('notificationclick', e => {
|
||||
e.notification.close();
|
||||
const url = '/' + ((e.notification.data && e.notification.data.url) || '');
|
||||
e.waitUntil(self.clients.matchAll({ type: 'window', includeUncontrolled: true }).then(cs => {
|
||||
const c = cs.find(x => new URL(x.url).origin === self.location.origin);
|
||||
if (c) { c.focus(); return c.navigate(url); }
|
||||
return self.clients.openWindow(url);
|
||||
}));
|
||||
});
|
||||
Reference in new issue
Block a user