Merge pull request #2533 from vector-im/dbkr/platform_notification
Add Notification support to the Web Platform
This commit is contained in:
commit
18504ca14e
1 changed files with 34 additions and 0 deletions
|
@ -63,6 +63,40 @@ export default class WebPlatform extends BasePlatform {
|
||||||
this._updateFavicon();
|
this._updateFavicon();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns true if the platform supports displaying
|
||||||
|
* notifications, otherwise false.
|
||||||
|
*/
|
||||||
|
supportsNotifications() : boolean {
|
||||||
|
return Boolean(global.Notification);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns true if the application currently has permission
|
||||||
|
* to display notifications. Otherwise false.
|
||||||
|
*/
|
||||||
|
maySendNotifications() : boolean {
|
||||||
|
return global.Notification.permission == 'granted';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Requests permission to send notifications. Returns
|
||||||
|
* a promise that is resolved when the user has responded
|
||||||
|
* to the request. The promise has a single string argument
|
||||||
|
* that is 'granted' if the user allowed the request or
|
||||||
|
* 'denied' otherwise.
|
||||||
|
*/
|
||||||
|
requestNotificationPermission() : Promise {
|
||||||
|
// annoyingly, the latest spec says this returns a
|
||||||
|
// promise, but this is only supported in Chrome 46
|
||||||
|
// and Firefox 47, so adapt the callback API.
|
||||||
|
const defer = q.defer();
|
||||||
|
global.Notification.requestPermission((result) => {
|
||||||
|
defer.resolve(result);
|
||||||
|
});
|
||||||
|
return defer.promise;
|
||||||
|
}
|
||||||
|
|
||||||
displayNotification(title: string, msg: string, avatarUrl: string) {
|
displayNotification(title: string, msg: string, avatarUrl: string) {
|
||||||
const notification = new global.Notification(
|
const notification = new global.Notification(
|
||||||
title,
|
title,
|
||||||
|
|
Loading…
Reference in a new issue