@snipsonian/core
Version:
Core/base reusable javascript code snippets
31 lines (30 loc) • 1.04 kB
JavaScript
export default function createObserverManager() {
let counter = 0;
const manager = {
observers: [],
};
const observerManager = manager;
observerManager.registerObserver = ({ onNotify, onError }) => {
counter += 1;
const observer = {
notify: onNotify,
notifyError: onError,
id: counter,
};
observerManager.observers.push(observer);
return observer;
};
observerManager.notifyObservers = (notification) => {
observerManager.observers.forEach((observer) => observer.notify(notification));
};
observerManager.notifyObserversOfError = (error) => {
observerManager.observers.forEach((observer) => observer.notifyError(error));
};
observerManager.unRegisterObserver = (observer) => {
const observerIndex = observerManager.observers.indexOf(observer);
if (observerIndex > -1) {
observerManager.observers.splice(observerIndex, 1);
}
};
return observerManager;
}