This repository has been archived on 2022-01-02. You can view files and clone it, but cannot push or open issues or pull requests.
AriaNg/src/scripts/services/ariaNgNotificationService.js
2016-06-29 00:18:17 +08:00

59 lines
2.2 KiB
JavaScript

(function () {
'use strict';
angular.module('ariaNg').factory('ariaNgNotificationService', ['$notification', '$translate', 'ariaNgSettingService', function ($notification, $translate, ariaNgSettingService) {
var isSupportBrowserNotification = $notification.isSupported;
var isPermissionGranted = function (permission) {
return permission == 'granted';
};
return {
isSupportBrowserNotification: function () {
return isSupportBrowserNotification;
},
isPermissionGranted: function (permission) {
return isPermissionGranted(permission);
},
hasBrowserPermission: function () {
if (!isSupportBrowserNotification) {
return false;
}
return isPermissionGranted($notification.getPermission());
},
requestBrowserPermission: function (callback) {
if (!isSupportBrowserNotification) {
return;
}
$notification.requestPermission().then(function (permission) {
if (!isPermissionGranted(permission)) {
ariaNgSettingService.setBrowserNotification(false);
}
if (callback) {
callback(permission);
}
});
},
notify: function (title, content) {
if (isSupportBrowserNotification && ariaNgSettingService.getBrowserNotification()) {
$notification($translate.instant(title), {
body: $translate.instant(content)
});
}
},
notifyTaskComplete: function (task) {
this.notify('Download Completed', (task && task.taskName ? task.taskName : ''));
},
notifyBtTaskComplete: function (task) {
this.notify('BT Download Completed', (task && task.taskName ? task.taskName : ''));
},
notifyTaskError: function (task) {
this.notify('Download Error', (task && task.taskName ? task.taskName : ''));
}
}
}]);
})();