From 2f4ae28cce0c9cc2230e462c4a2e8de2b2269781 Mon Sep 17 00:00:00 2001 From: Vasilii Mikhailovskii Date: Mon, 2 Dec 2024 23:19:20 +0200 Subject: [PATCH] add categories to manifest --- apps/frontend/public/manifest.json | 1 + apps/frontend/public/service-worker.js | 43 ++++++++++--------- .../src/server.ts | 7 ++- 3 files changed, 29 insertions(+), 22 deletions(-) diff --git a/apps/frontend/public/manifest.json b/apps/frontend/public/manifest.json index 9ed1ca9..4d3d9bf 100644 --- a/apps/frontend/public/manifest.json +++ b/apps/frontend/public/manifest.json @@ -1,6 +1,7 @@ { "name": "НаСвязи", "short_name": "НаСвязи", + "categories": ["communication", "utilities", "social", "productivity"], "start_url": "/", "icons": [ { diff --git a/apps/frontend/public/service-worker.js b/apps/frontend/public/service-worker.js index 31797c0..d8c61a0 100644 --- a/apps/frontend/public/service-worker.js +++ b/apps/frontend/public/service-worker.js @@ -98,13 +98,18 @@ self.addEventListener('notificationclick', (event) => { clients.matchAll({ type: 'window', includeUncontrolled: true }), ]) .then(([urlToOpen, clientList]) => { + const urlToOpenObj = new URL(urlToOpen, location.origin) for (const client of clientList) { console.log('client.url', client.url) - if (client.url === urlToOpen && 'focus' in client) { + const clientUrlObj = new URL(client.url) + if ( + urlToOpenObj.pathname + urlToOpenObj.search === + clientUrlObj.pathname + clientUrlObj.search + ) { console.log('focus') return Promise.all([ - client.focus(), + 'focus' in client && client.focus(), client.postMessage({ type: 'notificationClick', tag: event.notification.tag, @@ -122,15 +127,14 @@ self.addEventListener('notificationclick', (event) => { if (!client) { console.log('new window not opened') for (const client of clientList) { - return client.navigate(urlToOpen) - // return client.postMessage({ - // type: 'notificationClick', - // url: urlToOpen, - // tag: event.notification.tag, - // payload: event.notification.payload, - // matchUrl: false, - // msg: 'new window not opened', - // }) + return client.postMessage({ + type: 'notificationClick', + url: urlToOpen, + tag: event.notification.tag, + payload: event.notification.payload, + matchUrl: false, + msg: 'new window not opened', + }) } } }) @@ -138,15 +142,14 @@ self.addEventListener('notificationclick', (event) => { console.log('clients.openWindow not available') for (const client of clientList) { - return client.navigate(urlToOpen) - // return client.postMessage({ - // type: 'notificationClick', - // url: urlToOpen, - // tag: event.notification.tag, - // payload: event.notification.payload, - // matchUrl: false, - // msg: 'clients.openWindow not available', - // }) + return client.postMessage({ + type: 'notificationClick', + url: urlToOpen, + tag: event.notification.tag, + payload: event.notification.payload, + matchUrl: false, + msg: 'clients.openWindow not available', + }) } } }) diff --git a/services/message-delivery-method-web-push/src/server.ts b/services/message-delivery-method-web-push/src/server.ts index 1ad1058..5988ec7 100644 --- a/services/message-delivery-method-web-push/src/server.ts +++ b/services/message-delivery-method-web-push/src/server.ts @@ -106,6 +106,7 @@ const start = async () => { const topic = `chat-${msgDoc.qr_code_uri}-${msgDoc.chat}`; const timestamp = new Date(msgDoc.created_at).getTime(); const tag = `${topic}-${(timestamp - new Date(qrDoc.created_at).getTime()).toString(36)}`; + console.debug("subscription", subscription); const title = limitStringLengthWithEllipsis( `${qrDoc.name}: новое сообщение`, @@ -141,7 +142,8 @@ const start = async () => { ); } catch (error) { console.error( - `Error sending notification to ${row.id} - ${JSON.stringify(error)}`, + `Error sending notification to owner ${row.id} - ${JSON.stringify((error as Error).message)}`, + error, ); } } @@ -219,7 +221,8 @@ const start = async () => { ); } catch (error) { console.error( - `Error sending notification to ${row.id} - ${JSON.stringify(error)}`, + `Error sending notification to guest ${row.id} - ${JSON.stringify((error as Error).message)}`, + error, ); } }