summary refs log tree commit diff
path: root/webclient/components
diff options
context:
space:
mode:
authorKegan Dougal <kegan@matrix.org>2014-10-31 11:54:04 +0000
committerKegan Dougal <kegan@matrix.org>2014-10-31 11:54:04 +0000
commit20cf0b7aeb42c49bce199206130b5498b0fc293c (patch)
treef5fc222e4aaff780e570bbd2ac38d60246f769d0 /webclient/components
parentAdd notification-service.js to handle binging/notifications. Shift logic to t... (diff)
downloadsynapse-20cf0b7aeb42c49bce199206130b5498b0fc293c.tar.xz
Factor out notification logic.
Diffstat (limited to 'webclient/components')
-rw-r--r--webclient/components/matrix/event-handler-service.js25
-rw-r--r--webclient/components/matrix/notification-service.js22
2 files changed, 29 insertions, 18 deletions
diff --git a/webclient/components/matrix/event-handler-service.js b/webclient/components/matrix/event-handler-service.js
index bcf805fc73..e63584510b 100644
--- a/webclient/components/matrix/event-handler-service.js
+++ b/webclient/components/matrix/event-handler-service.js
@@ -212,22 +212,15 @@ function(matrixService, $rootScope, $q, $timeout, mPresence, notificationService
                         roomTitle = event.room_id;
                     }
                     
-                    var notification = new window.Notification(
-                        displayname +
-                        " (" + roomTitle + ")",
-                    {
-                        "body": message,
-                        "icon": member ? member.avatar_url : undefined
-                    });
-
-                    notification.onclick = function() {
-                        console.log("notification.onclick() room=" + event.room_id);
-                        $rootScope.goToPage('room/' + (event.room_id)); 
-                    };
-
-                    $timeout(function() {
-                        notification.close();
-                    }, 5 * 1000);
+                    notificationService.showNotification(
+                        displayname + " (" + roomTitle + ")",
+                        message,
+                        member ? member.avatar_url : undefined,
+                        function() {
+                            console.log("notification.onclick() room=" + event.room_id);
+                            $rootScope.goToPage('room/' + event.room_id); 
+                        }
+                    );
                 }
             }
         }
diff --git a/webclient/components/matrix/notification-service.js b/webclient/components/matrix/notification-service.js
index 7821248846..9a911413c3 100644
--- a/webclient/components/matrix/notification-service.js
+++ b/webclient/components/matrix/notification-service.js
@@ -21,7 +21,7 @@ This service manages notifications: enabling, creating and showing them. This
 also contains 'bing word' logic.
 */
 angular.module('notificationService', [])
-.factory('notificationService', function($rootScope) {
+.factory('notificationService', ['$timeout', function($timeout) {
 
     var getLocalPartFromUserId = function(user_id) {
         if (!user_id) {
@@ -80,7 +80,25 @@ angular.module('notificationService', [])
                 }
             }
             return false;
+        },
+        
+        showNotification: function(title, body, icon, onclick) {
+            var notification = new window.Notification(
+                title,
+                {
+                    "body": body,
+                    "icon": icon
+                }
+            );
+
+            if (onclick) {
+                notification.onclick = onclick;
+            }
+
+            $timeout(function() {
+                notification.close();
+            }, 5 * 1000);
         }
     };
 
-});
+}]);