diff options
author | Matthew Hodgson <matthew@matrix.org> | 2014-08-17 03:48:28 +0100 |
---|---|---|
committer | Matthew Hodgson <matthew@matrix.org> | 2014-08-17 03:48:28 +0100 |
commit | 60245c4f90f60dc7af79165cf074a4df57a02558 (patch) | |
tree | 0ceb74ee15def532e833d7f87c2052e13af7713b /webclient/room/room-controller.js | |
parent | unbreak login sequence (which spuriously required a sydent server to be speci... (diff) | |
download | synapse-60245c4f90f60dc7af79165cf074a4df57a02558.tar.xz |
implement html5 notifications. (have to be explicitly requested under Config)
Diffstat (limited to 'webclient/room/room-controller.js')
-rw-r--r-- | webclient/room/room-controller.js | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/webclient/room/room-controller.js b/webclient/room/room-controller.js index 304b06c1f1..30f66de458 100644 --- a/webclient/room/room-controller.js +++ b/webclient/room/room-controller.js @@ -137,6 +137,23 @@ angular.module('RoomController', ['ngSanitize']) $scope.$on(eventHandlerService.MSG_EVENT, function(ngEvent, event, isLive) { if (isLive && event.room_id === $scope.room_id) { scrollToBottom(); + + if (window.Notification) { + // FIXME: we should also notify based on a timer or other heuristics + // rather than the window being minimised + if (document.hidden) { + var notification = new window.Notification( + ($scope.members[event.user_id].displayname || event.user_id) + + " (" + $scope.room_alias + ")", + { + "body": event.content.body, + "icon": $scope.members[event.user_id].avatar_url, + }); + $timeout(function() { + notification.close(); + }, 5 * 1000); + } + } } }); @@ -154,7 +171,7 @@ angular.module('RoomController', ['ngSanitize']) paginate(MESSAGES_PER_PAGINATION); } }; - + var paginate = function(numItems) { // console.log("paginate " + numItems); if ($scope.state.paginating) { |