2025-05-28 15:36:51 -07:00

53 lines
1.9 KiB
JavaScript

import { getCurrentRulesEngineConfig } from '../config/utils';
export class BaseManager {
constructor(params = {}) {
this.randomId = 0; // helpful for debugging
this.setState = (newState) => {
var _a;
const state = newState || ((_a = getCurrentRulesEngineConfig().store) === null || _a === void 0 ? void 0 : _a.getState()) || null;
this.state = state;
};
this.getState = () => this.state || null;
this.setDispatch = (newDispatch) => {
var _a;
const dispatch = newDispatch || ((_a = getCurrentRulesEngineConfig().store) === null || _a === void 0 ? void 0 : _a.dispatch) || null;
if (dispatch) {
this.dispatch = dispatch;
}
};
this.getDispatch = () => this.dispatch;
this.setState(params.state);
this.setDispatch(params.dispatch);
this.subscribeToStateUpdates(function init() { });
// this random id can be used to help debug if there are more than one instance
this.randomId = Math.floor(Math.random() * 1000000);
this.name = 'BaseManager';
}
updateState() {
const store = getCurrentRulesEngineConfig().store;
if (store) {
this.setState(store.getState());
}
}
subscribeToStateUpdates(callback) {
if (getCurrentRulesEngineConfig().store) {
const store = getCurrentRulesEngineConfig().store;
if (this.unsubscribe) {
this.unsubscribe();
}
this.unsubscribe = store === null || store === void 0 ? void 0 : store.subscribe(() => {
this.setState(store.getState());
if (callback) {
callback();
}
});
return this.unsubscribe;
}
return () => {
if (this.unsubscribe) {
this.unsubscribe();
}
};
}
}