59 lines
2.2 KiB
JavaScript
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 : ''));
|
|
}
|
|
}
|
|
}]);
|
|
})();
|