Jamstash/app/common/notification-service.js
Hyzual e5846e30f9 Removes the player functions from the rootScope.
However, saving track's position is broken.
Some are still there because of problems I don't know how to solve, e.g. circular dependency between notifications and player.
Uses the queue controller for the sidebar queue.
Moves loadTrackPosition to the main controller.
2015-01-17 19:12:56 +01:00

67 lines
2.2 KiB
JavaScript

/**
* jamstash.notifications Module
*
* Provides access to the notification UI.
*/
angular.module('jamstash.notifications', [])
.service('notifications', ['$rootScope', 'globals', function($rootScope, globals) {
'use strict';
var msgIndex = 1;
this.updateMessage = function (msg, autohide) {
if (msg !== '') {
var id = $rootScope.Messages.push(msg) - 1;
$('#messages').fadeIn();
if (autohide) {
setTimeout(function () {
$('#msg_' + id).fadeOut(function () { $(this).remove(); });
}, globals.settings.Timeout);
}
}
};
this.requestPermissionIfRequired = function () {
if (window.Notify.isSupported() && window.Notify.needsPermission()) {
window.Notify.requestPermission();
}
};
this.hasNotificationPermission = function () {
return (window.Notify.needsPermission() === false);
};
this.hasNotificationSupport = function () {
return window.Notify.isSupported();
};
var notifications = [];
this.showNotification = function (pic, title, text, type, bind) {
if (this.hasNotificationPermission()) {
//closeAllNotifications()
var settings = {};
if (bind = '#NextTrack') {
settings.notifyClick = function () {
$rootScope.nextTrack();
this.close();
};
}
if (type === 'text') {
settings.body = text;
settings.icon = pic;
} else if (type === 'html') {
settings.body = text;
}
var notification = new Notify(title, settings);
notifications.push(notification);
setTimeout(function (notWin) {
notWin.close();
}, globals.settings.Timeout, notification);
notification.show();
} else {
console.log("showNotification: No Permission");
}
};
this.closeAllNotifications = function () {
for (var notification in notifications) {
notifications[notification].close();
}
};
}]);