Ver Fonte

Add Timeout to automatically close Notifications

RobinLinus há 6 anos atrás
pai
commit
82de30525b
2 ficheiros alterados com 12 adições e 5 exclusões
  1. 11 4
      client/scripts/ui.js
  2. 1 1
      client/service-worker.js

+ 11 - 4
client/scripts/ui.js

@@ -361,19 +361,26 @@ class Notifications {
         });
     }
 
-    _notify(message, body) {
+    _notify(message, body, closeTimeout = 10000) {
         const config = {
             body: body,
             icon: '/images/logo_transparent_128x128.png',
         }
+        let notification;
         try {
-            return new Notification(message, config);
+            notification = new Notification(message, config);
         } catch (e) {
-            // android doesn't support "new Notification" if service worker is installed
+            // Android doesn't support "new Notification" if service worker is installed
             if (!serviceWorker || !serviceWorker.showNotification) return;
-            return serviceWorker.showNotification(message, config);
+            notification = serviceWorker.showNotification(message, config);
         }
 
+        // Notification is persistent on Android. We have to close it manually
+        if(closeTimeout){
+            setTimeout( _ => notification.close(), closeTimeout);
+        }
+
+        return notification;
     }
 
     _messageNotification(message) {

+ 1 - 1
client/service-worker.js

@@ -1,4 +1,4 @@
-var CACHE_NAME = 'snapdrop-cache-v1.01';
+var CACHE_NAME = 'snapdrop-cache-v1.02';
 var urlsToCache = [
   '/',
   '/styles.css',