1
0
Fork 0
mirror of synced 2024-06-30 12:10:51 +12:00
appwrite/public/scripts/services/alerts.js
2019-05-09 11:01:51 +03:00

65 lines
1.5 KiB
JavaScript

(function (window) {
"use strict";
window.ls.container.set('alerts', function (window) {
let service = {};
let counter = 0;
let event = new CustomEvent('alerted', {
bubbles: false,
cancelable: true
});
service.list = [];
service.remove = function (id) {
let message = this.get(id);
if (message && message.remove && typeof message.remove === 'function') {
message.remove();
}
this.list = this.list.filter(function( obj ) {
return obj.id !== parseInt(id);
});
window.document.dispatchEvent(event);
};
service.get = function(id){
id = parseInt(id);
let result = this.list.filter(function(obj) {
return obj.id === id;
});
if(result[0]) {
return result[0];
}
return null;
};
service.send = function (message, time) {
let scope = this;
message.id = counter++;
scope.list.unshift(message);
window.document.dispatchEvent(event);
if(time > 0) { // When 0 alert is unlimited in time
window.setTimeout(function(message) { return function () {
scope.remove(message.id)
}}(message), time);
}
return message.id;
};
return service;
}, true);
})(window);