Merge pull request #2533 from vector-im/dbkr/platform_notification

Add Notification support to the Web Platform
This commit is contained in:
David Baker 2016-11-02 19:43:17 +00:00 committed by GitHub
commit 18504ca14e

View file

@ -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,