eco-state
Version:
Light Weight Asynchronous JavaScript Eco friendly State Management Library.
19 lines (18 loc) • 780 B
JavaScript
import { setCurrentState, getCurrentState } from './state';
import { notifyAllUpdateListenersOfStateChange } from './stateUpdateRegister';
import { getListeners } from './createListener';
/**
*
* @param {string} eventType
* @param {any} eventData
* @param {function} completionCallback
*/
export async function eventCreator(eventType, eventData, completionCallback) {
let eventTypeNewState = await getListeners()[eventType](getCurrentState()[eventType], eventData);
if (eventTypeNewState) {
setCurrentState({ ...getCurrentState(), [eventType]: eventTypeNewState });
typeof completionCallback === 'function' && completionCallback(getCurrentState()[eventType]);
notifyAllUpdateListenersOfStateChange();
}
return getCurrentState();
}