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);
}
};
-});
+}]);
|