summary refs log tree commit diff
diff options
context:
space:
mode:
authorEmmanuel ROHEE <erohee@amdocs.com>2014-08-29 17:11:03 +0200
committerEmmanuel ROHEE <erohee@amdocs.com>2014-08-29 17:13:57 +0200
commitc3a774e414324746c484ad21d19c4be4e2167cd0 (patch)
treed363d80d11427baa964c3b065a2745d58901d3e6
parentbetter support for call hangups (diff)
downloadsynapse-c3a774e414324746c484ad21d19c4be4e2167cd0.tar.xz
Show desktop notification state. Provide help if the user has previously denied permission to display them.
-rw-r--r--webclient/app-controller.js7
-rw-r--r--webclient/settings/settings-controller.js21
-rw-r--r--webclient/settings/settings.html25
3 files changed, 39 insertions, 14 deletions
diff --git a/webclient/app-controller.js b/webclient/app-controller.js
index 80474bb8df..775113bc87 100644
--- a/webclient/app-controller.js
+++ b/webclient/app-controller.js
@@ -69,13 +69,6 @@ angular.module('MatrixWebClientController', ['matrixService', 'mPresence', 'even
         $scope.logout();
     });
     
-    $scope.requestNotifications = function() {
-        if (window.Notification) {
-            console.log("Notification.permission: " + window.Notification.permission);
-            window.Notification.requestPermission(function(){});
-        }
-    };
-    
 }]);
 
    
diff --git a/webclient/settings/settings-controller.js b/webclient/settings/settings-controller.js
index f7d5e8eb75..3a9060ebae 100644
--- a/webclient/settings/settings-controller.js
+++ b/webclient/settings/settings-controller.js
@@ -25,7 +25,7 @@ angular.module('SettingsController', ['matrixService', 'mFileUpload', 'mFileInpu
         displayName: $scope.config.displayName,
         avatarUrl: $scope.config.avatarUrl
     };
-
+    
     $scope.$watch("profile.avatarFile", function(newValue, oldValue) {
         if ($scope.profile.avatarFile) {
             console.log("Uploading new avatar file...");
@@ -143,4 +143,23 @@ angular.module('SettingsController', ['matrixService', 'mFileUpload', 'mFileInpu
             }
         );
     };
+    
+    
+    /*** Desktop notifications section ***/
+    $scope.settings = {
+        notifications: undefined
+    };
+
+    // If the browser supports it, check the desktop notification state
+    if ("Notification" in window) {
+        $scope.settings.notifications = window.Notification.permission;
+    }
+
+    $scope.requestNotifications = function() {
+        console.log("requestNotifications");
+        window.Notification.requestPermission(function (permission) {
+            console.log("   -> User decision: " + permission);
+            $scope.settings.notifications = permission;
+        });
+    };
 }]);
\ No newline at end of file
diff --git a/webclient/settings/settings.html b/webclient/settings/settings.html
index 453a4fc35f..d06a0083fa 100644
--- a/webclient/settings/settings.html
+++ b/webclient/settings/settings.html
@@ -52,7 +52,25 @@
             </table>
         </div>
         <br/>
-
+        
+        <h3>Desktop notifications</h3>
+        <div ng-switch="settings.notifications">
+            <div ng-switch-when="granted">
+                Notifications are enabled.
+            </div>
+            <div ng-switch-when="denied">
+                You have denied permission for notifications.<br/>
+                To enable it, reset the notification setting for this web site into your browser settings.
+            </div>
+            <div ng-switch-when="default">
+                <button ng-click="requestNotifications()">Click here to enable them</button>
+            </div>
+            <div ng-switch-default="">
+                Sorry, your browser does not support notifications.
+            </div>
+        </div>
+        <br/>
+        
         <h3>Configuration</h3>
         <div>
             <div>Home server: {{ config.homeserver }} </div>
@@ -60,11 +78,6 @@
             <div>Access token: {{ config.access_token }} </div>
         </div>
         <br/>
-        
-        <div>
-            <div><button ng-click="requestNotifications()">Request notifications</button></div>
-        </div>
-        <br/>
 
         {{ feedback }}