binwiederhier 1 месяц назад
Родитель
Сommit
5ae3774f19
3 измененных файлов с 14 добавлено и 5 удалено
  1. 6 0
      web/public/sw.js
  2. 3 3
      web/src/app/Notifier.js
  3. 5 2
      web/src/components/hooks.js

+ 6 - 0
web/public/sw.js

@@ -163,6 +163,12 @@ const handlePushUnknown = async (data) => {
 const handlePush = async (data) => {
   const { message } = data;
 
+  // This logic is (partially) duplicated in
+  // - Android: SubscriberService::onNotificationReceived()
+  // - Android: FirebaseService::onMessageReceived()
+  // - Web app: hooks.js:handleNotification()
+  // - Web app: sw.js:handleMessage(), sw.js:handleMessageClear(), ...
+
   if (message.event === EVENT_MESSAGE) {
     await handlePushMessage(data);
   } else if (message.event === EVENT_MESSAGE_DELETE) {

+ 3 - 3
web/src/app/Notifier.js

@@ -26,7 +26,7 @@ class Notifier {
         subscriptionId: subscription.id,
         message: notification,
         defaultTitle,
-        topicRoute: new URL(routes.forSubscription(subscription), window.location.origin).toString()
+        topicRoute: new URL(routes.forSubscription(subscription), window.location.origin).toString(),
       })
     );
   }
@@ -40,7 +40,7 @@ class Notifier {
       console.log(`[Notifier] Cancelling notification with ${tag}`);
       const registration = await this.serviceWorkerRegistration();
       const notifications = await registration.getNotifications({ tag });
-      notifications.forEach(n => n.close());
+      notifications.forEach((n) => n.close());
     } catch (e) {
       console.log(`[Notifier] Error cancelling notification`, e);
     }
@@ -72,7 +72,7 @@ class Notifier {
     if (hasWebPushTopics) {
       return pushManager.subscribe({
         userVisibleOnly: true,
-        applicationServerKey: urlB64ToUint8Array(config.web_push_public_key)
+        applicationServerKey: urlB64ToUint8Array(config.web_push_public_key),
       });
     }
 

+ 5 - 2
web/src/components/hooks.js

@@ -51,8 +51,11 @@ export const useConnectionListeners = (account, subscriptions, users, webPushTop
       };
 
       const handleNotification = async (subscriptionId, notification) => {
-        // Note: This logic is duplicated in the Android app in SubscriberService::onNotificationReceived()
-        //       and FirebaseService::handleMessage().
+        // This logic is (partially) duplicated in
+        // - Android: SubscriberService::onNotificationReceived()
+        // - Android: FirebaseService::onMessageReceived()
+        // - Web app: hooks.js:handleNotification()
+        // - Web app: sw.js:handleMessage(), sw.js:handleMessageClear(), ...
 
         if (notification.event === EVENT_MESSAGE_DELETE && notification.sequence_id) {
           await subscriptionManager.deleteNotificationBySequenceId(subscriptionId, notification.sequence_id);