88 lines
3.2 KiB
JavaScript
88 lines
3.2 KiB
JavaScript
(function () {
|
|
'use strict';
|
|
|
|
angular.module('ariaNg').factory('ariaNgNotificationService', ['$notification', '$translate', 'Notification', 'ariaNgSettingService', function ($notification, $translate, Notification, 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);
|
|
}
|
|
});
|
|
},
|
|
notifyViaBrowser: function (title, content) {
|
|
if (isSupportBrowserNotification && ariaNgSettingService.getBrowserNotification()) {
|
|
$notification($translate.instant(title), {
|
|
body: $translate.instant(content)
|
|
});
|
|
}
|
|
},
|
|
notifyInPage: function (title, content, options) {
|
|
if (!options) {
|
|
options = {};
|
|
}
|
|
|
|
if (title) {
|
|
title = $translate.instant(title);
|
|
}
|
|
|
|
if (content) {
|
|
content = $translate.instant(content);
|
|
}
|
|
|
|
if (!content) {
|
|
options.message = title;
|
|
} else {
|
|
options.title = title;
|
|
options.message = content;
|
|
}
|
|
|
|
if (!options.type || !Notification[options.type]) {
|
|
options.type = 'primary';
|
|
}
|
|
|
|
Notification[options.type](options);
|
|
},
|
|
notifyTaskComplete: function (task) {
|
|
this.notifyViaBrowser('Download Completed', (task && task.taskName ? task.taskName : ''));
|
|
},
|
|
notifyBtTaskComplete: function (task) {
|
|
this.notifyViaBrowser('BT Download Completed', (task && task.taskName ? task.taskName : ''));
|
|
},
|
|
notifyTaskError: function (task) {
|
|
this.notifyViaBrowser('Download Error', (task && task.taskName ? task.taskName : ''));
|
|
},
|
|
clearNotificationInPage: function () {
|
|
Notification.clearAll();
|
|
}
|
|
}
|
|
}]);
|
|
}());
|