UNPKG

@zubridge/electron

Version:

A streamlined state management library for Electron applications using Zustand.

37 lines (36 loc) 1.32 kB
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; }