111 lines
4.1 KiB
JavaScript
111 lines
4.1 KiB
JavaScript
var version = 10;
|
|
var cacheKey = 'movim_' + version;
|
|
|
|
const channel = new BroadcastChannel('messages');
|
|
|
|
self.addEventListener('install', (e) => {
|
|
self.skipWaiting();
|
|
|
|
// Workaround for https://issues.chromium.org/issues/466790291
|
|
e.addRoutes({
|
|
condition: {
|
|
urlPattern: new URLPattern({})
|
|
},
|
|
source: "fetch-event"
|
|
});
|
|
|
|
e.waitUntil(
|
|
caches.open(cacheKey).then((cache) => cache.addAll([
|
|
'/scripts/libsignal_protocol.min.js',
|
|
'/scripts/thumbhash.js',
|
|
'/scripts/movim_emojis_list.js',
|
|
'/theme/audio/call.opus',
|
|
'/theme/audio/message.message',
|
|
'/theme/audio/user_joined.opus',
|
|
'/theme/audio/user_left.message',
|
|
'/theme/fonts/MaterialSymbols/MaterialSymbols-Outlined.woff2',
|
|
'/theme/fonts/Roboto/KFOlCnqEu92Fr1MmSU5fCRc4EsA.woff2',
|
|
'/theme/fonts/Roboto/KFOlCnqEu92Fr1MmSU5fABc4EsA.woff2',
|
|
'/theme/fonts/Roboto/KFOlCnqEu92Fr1MmSU5fCBc4EsA.woff2',
|
|
'/theme/fonts/Roboto/KFOlCnqEu92Fr1MmSU5fBxc4EsA.woff2',
|
|
'/theme/fonts/Roboto/KFOlCnqEu92Fr1MmSU5fCxc4EsA.woff2',
|
|
'/theme/fonts/Roboto/KFOlCnqEu92Fr1MmSU5fChc4EsA.woff2',
|
|
'/theme/fonts/Roboto/KFOlCnqEu92Fr1MmSU5fBBc4.woff2',
|
|
'/theme/fonts/Roboto/KFOmCnqEu92Fr1Mu72xKOzY.woff2',
|
|
'/theme/fonts/Roboto/KFOmCnqEu92Fr1Mu5mxKOzY.woff2',
|
|
'/theme/fonts/Roboto/KFOmCnqEu92Fr1Mu7mxKOzY.woff2',
|
|
'/theme/fonts/Roboto/KFOmCnqEu92Fr1Mu4WxKOzY.woff2',
|
|
'/theme/fonts/Roboto/KFOmCnqEu92Fr1Mu7WxKOzY.woff2',
|
|
'/theme/fonts/Roboto/KFOmCnqEu92Fr1Mu7GxKOzY.woff2',
|
|
'/theme/fonts/Roboto/KFOmCnqEu92Fr1Mu4mxK.woff2',
|
|
'/theme/fonts/Roboto/KFOlCnqEu92Fr1MmEU9fCRc4EsA.woff2',
|
|
'/theme/fonts/Roboto/KFOlCnqEu92Fr1MmEU9fABc4EsA.woff2',
|
|
'/theme/fonts/Roboto/KFOlCnqEu92Fr1MmEU9fCBc4EsA.woff2',
|
|
'/theme/fonts/Roboto/KFOlCnqEu92Fr1MmEU9fBxc4EsA.woff2',
|
|
'/theme/fonts/Roboto/KFOlCnqEu92Fr1MmEU9fCxc4EsA.woff2',
|
|
'/theme/fonts/Roboto/KFOlCnqEu92Fr1MmEU9fChc4EsA.woff2',
|
|
'/theme/fonts/Roboto/KFOlCnqEu92Fr1MmEU9fBBc4.woff2',
|
|
'/theme/fonts/Roboto/KFOlCnqEu92Fr1MmWUlfCRc4EsA.woff2',
|
|
'/theme/fonts/Roboto/KFOlCnqEu92Fr1MmWUlfABc4EsA.woff2',
|
|
'/theme/fonts/Roboto/KFOlCnqEu92Fr1MmWUlfCBc4EsA.woff2',
|
|
'/theme/fonts/Roboto/KFOlCnqEu92Fr1MmWUlfBxc4EsA.woff2',
|
|
'/theme/fonts/Roboto/KFOlCnqEu92Fr1MmWUlfCxc4EsA.woff2',
|
|
'/theme/fonts/Roboto/KFOlCnqEu92Fr1MmWUlfChc4EsA.woff2',
|
|
'/theme/fonts/Roboto/KFOlCnqEu92Fr1MmWUlfBBc4.woff2',
|
|
]))
|
|
);
|
|
});
|
|
|
|
self.addEventListener('activate', function (e) {
|
|
e.waitUntil(caches.keys().then(keys => {
|
|
return Promise.all(keys
|
|
.filter(key => key != cacheKey)
|
|
.map(key => caches.delete(key))
|
|
);
|
|
}).then(function () {
|
|
return self.clients.claim();
|
|
}));
|
|
});
|
|
|
|
self.addEventListener('push', function (e) {
|
|
var json = e.data.json();
|
|
var options = {
|
|
body: json.body,
|
|
icon: json.picture,
|
|
badge: '/theme/img/app/badge.png',
|
|
vibrate: [100, 50, 100],
|
|
data: json.data,
|
|
actions: json.actions,
|
|
timestamp: json.timestamp * 1000,
|
|
tag: json.tag,
|
|
};
|
|
e.waitUntil(
|
|
self.registration.showNotification(json.title, options)
|
|
);
|
|
});
|
|
|
|
self.addEventListener('notificationclick', function (e) {
|
|
e.waitUntil(
|
|
clients
|
|
.matchAll({
|
|
type: "window",
|
|
})
|
|
.then((clientList) => {
|
|
for (const client of clientList) {
|
|
if ("focus" in client) return client.focus();
|
|
}
|
|
if (clients.openWindow) return clients.openWindow(e.notification.data.url);
|
|
}),
|
|
);
|
|
|
|
channel.postMessage({ type: e.action, data: e.notification.data });
|
|
|
|
e.notification.close();
|
|
});
|
|
|
|
self.addEventListener('fetch', (e) => {
|
|
e.respondWith(
|
|
caches.match(e.request).then((response) => response || fetch(e.request)),
|
|
);
|
|
});
|