@zubridge/electron
Version:
A streamlined state management library for Electron applications using Zustand.
37 lines (36 loc) • 1.32 kB
JavaScript
import { getStateManager } from './stateManagerRegistry.js';
/**
* Implementation that handles both overloads
*/
export function createDispatch(storeOrManager, options) {
// Get or create a state manager for the store or use the provided one
const stateManager = 'processAction' in storeOrManager
? storeOrManager
: getStateManager(storeOrManager, options);
const dispatch = (actionOrThunk, payload) => {
try {
if (typeof actionOrThunk === 'function') {
// Handle thunks
return actionOrThunk(() => stateManager.getState(), dispatch);
}
else if (typeof actionOrThunk === 'string') {
// Handle string action types with payload
stateManager.processAction({
type: actionOrThunk,
payload,
});
}
else if (actionOrThunk && typeof actionOrThunk === 'object') {
// Handle action objects
stateManager.processAction(actionOrThunk);
}
else {
console.error('Invalid action or thunk:', actionOrThunk);
}
}
catch (err) {
console.error('Error in dispatch:', err);
}
};
return dispatch;
}