From f9b063ece0b321c4652533dd570065dc841b9a81 Mon Sep 17 00:00:00 2001
From: Vitaly Takmazov
Date: Mon, 29 Jul 2024 10:18:54 +0300
Subject: Bundle service worker correctly
---
src/main/assets/scripts.js | 2 +-
src/main/assets/sw.js | 47 +++++++++++++++++++++++++++++++++++++++++
src/main/resources/static/sw.js | 47 -----------------------------------------
3 files changed, 48 insertions(+), 48 deletions(-)
create mode 100644 src/main/assets/sw.js
delete mode 100644 src/main/resources/static/sw.js
diff --git a/src/main/assets/scripts.js b/src/main/assets/scripts.js
index 38406c2a..1583cedc 100644
--- a/src/main/assets/scripts.js
+++ b/src/main/assets/scripts.js
@@ -535,7 +535,7 @@ function fetchUserUri(dataUri) {
const registerServiceWorker = () => {
const publicKey = 'BPU0LniKKR0QiaUvILPd9AystmSOU8rWDZobxKm7IJN5HYxOSQdktRdc74TZvyRS9_kyUz7LDN6gUAmAVOmObAU'
- navigator.serviceWorker.register('/sw.js', { scope: '/' })
+ navigator.serviceWorker.register(new URL('./sw.js', import.meta.url), { scope: '/' })
navigator.serviceWorker.ready.then(reg => {
return reg.pushManager.subscribe({
userVisibleOnly: true,
diff --git a/src/main/assets/sw.js b/src/main/assets/sw.js
new file mode 100644
index 00000000..a64de7cc
--- /dev/null
+++ b/src/main/assets/sw.js
@@ -0,0 +1,47 @@
+///
+///
+///
+
+var sw = /** @type {ServiceWorkerGlobalScope & typeof self} */ (self)
+sw.addEventListener('install', function() {
+ sw.skipWaiting()
+})
+sw.addEventListener('activate', function() {
+ sw.clients.claim()
+})
+sw.addEventListener('push', function(evt) {
+ if (evt.data) {
+ const data = evt.data.json()
+ console.log('Push', data)
+ if (data.body) {
+ sw.registration.showNotification(data.title, {
+ body: data.body,
+ icon: data.custom.message.user.avatar,
+ tag: data.tag,
+ data: data.custom.message
+ })
+ }
+ }
+})
+sw.addEventListener('notificationclick', function(evt) {
+ evt.waitUntil(
+ sw.clients.matchAll().then(function(clientList) {
+ const message = evt.notification.data
+ const url = message.mid
+ ? message.rid
+ ? `https://juick.com/m/${message.mid}#${message.rid}`
+ : `https://juick.com/m/${message.mid}`
+ : 'https://juick.com/pm/inbox'
+ if (clientList.length > 0) {
+ for (var i = 0; i < clientList.length; i++) {
+ if (clientList[i].url === url) {
+ return clientList[i].focus()
+ }
+ }
+ clientList[0].navigate(url)
+ return clientList[0].focus()
+ }
+ return sw.clients.openWindow(url)
+ })
+ )
+})
diff --git a/src/main/resources/static/sw.js b/src/main/resources/static/sw.js
deleted file mode 100644
index a64de7cc..00000000
--- a/src/main/resources/static/sw.js
+++ /dev/null
@@ -1,47 +0,0 @@
-///
-///
-///
-
-var sw = /** @type {ServiceWorkerGlobalScope & typeof self} */ (self)
-sw.addEventListener('install', function() {
- sw.skipWaiting()
-})
-sw.addEventListener('activate', function() {
- sw.clients.claim()
-})
-sw.addEventListener('push', function(evt) {
- if (evt.data) {
- const data = evt.data.json()
- console.log('Push', data)
- if (data.body) {
- sw.registration.showNotification(data.title, {
- body: data.body,
- icon: data.custom.message.user.avatar,
- tag: data.tag,
- data: data.custom.message
- })
- }
- }
-})
-sw.addEventListener('notificationclick', function(evt) {
- evt.waitUntil(
- sw.clients.matchAll().then(function(clientList) {
- const message = evt.notification.data
- const url = message.mid
- ? message.rid
- ? `https://juick.com/m/${message.mid}#${message.rid}`
- : `https://juick.com/m/${message.mid}`
- : 'https://juick.com/pm/inbox'
- if (clientList.length > 0) {
- for (var i = 0; i < clientList.length; i++) {
- if (clientList[i].url === url) {
- return clientList[i].focus()
- }
- }
- clientList[0].navigate(url)
- return clientList[0].focus()
- }
- return sw.clients.openWindow(url)
- })
- )
-})
--
cgit v1.2.3