Show desktop notification state. Provide help if the user has previously denied permission to display them.

This commit is contained in:
Emmanuel ROHEE 2014-08-29 17:11:03 +02:00
parent 0ef54caa28
commit c3a774e414
3 changed files with 39 additions and 14 deletions

View File

@ -69,13 +69,6 @@ angular.module('MatrixWebClientController', ['matrixService', 'mPresence', 'even
$scope.logout(); $scope.logout();
}); });
$scope.requestNotifications = function() {
if (window.Notification) {
console.log("Notification.permission: " + window.Notification.permission);
window.Notification.requestPermission(function(){});
}
};
}]); }]);

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

View File

@ -53,6 +53,24 @@
</div> </div>
<br/> <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> <h3>Configuration</h3>
<div> <div>
<div>Home server: {{ config.homeserver }} </div> <div>Home server: {{ config.homeserver }} </div>
@ -61,11 +79,6 @@
</div> </div>
<br/> <br/>
<div>
<div><button ng-click="requestNotifications()">Request notifications</button></div>
</div>
<br/>
{{ feedback }} {{ feedback }}
</div> </div>