@raona/sp
Version:
Raona utilities to work with Sharepoint using pnp/sp
49 lines (48 loc) • 1.91 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var Notifier /* extends Singleton<Notifier>() */ = /** @class */ (function () {
function Notifier() {
this.subscribers = {};
this.subscriptionCount = 0;
}
/* public constructor(){
super('notifier');
} */
Notifier.initialize = function () {
window.notifier = window.notifier || new Notifier();
};
Notifier.getInstance = function () {
this.initialize();
return window.notifier;
};
Notifier.prototype.subscribe = function (subscriptionName, callback) {
var subscriberList = this.subscribers[subscriptionName];
var subscriptionId = this.subscriptionCount++; // TODO: search a better way of getting a unique id
if (typeof subscriberList !== 'undefined') {
subscriberList[subscriptionId] = callback;
}
else {
subscriberList = { subscriptionId: callback };
}
this.subscribers[subscriptionName] = subscriberList;
return { subscriptionName: subscriptionName, subscriptionId: subscriptionId };
};
Notifier.prototype.unsubscribe = function (_a) {
var subscriptionName = _a.subscriptionName, subscriptionId = _a.subscriptionId;
delete this.subscribers[subscriptionName][subscriptionId];
};
Notifier.prototype.notify = function (subscriptionName) {
var values = [];
for (var _i = 1; _i < arguments.length; _i++) {
values[_i - 1] = arguments[_i];
}
var subscriberList = this.subscribers[subscriptionName];
if (subscriberList) {
Object.keys(subscriberList).map(function (sKey) {
subscriberList[sKey].apply(subscriberList, values);
});
}
};
return Notifier;
}());
exports.Notifier = Notifier;