From ee7bc508810e66f96c702ee3b896ed0a7c1772ed Mon Sep 17 00:00:00 2001 From: johndoe6345789 Date: Sun, 18 Jan 2026 18:28:20 +0000 Subject: [PATCH] Centralize store action name lookups --- src/store/actionNames.ts | 48 +++++++++++++++++++ src/store/middleware/autoSyncMiddleware.ts | 24 +--------- src/store/middleware/persistenceMiddleware.ts | 20 ++++---- 3 files changed, 58 insertions(+), 34 deletions(-) create mode 100644 src/store/actionNames.ts diff --git a/src/store/actionNames.ts b/src/store/actionNames.ts new file mode 100644 index 0000000..c09cbc7 --- /dev/null +++ b/src/store/actionNames.ts @@ -0,0 +1,48 @@ +const itemSlices = [ + 'files', + 'models', + 'components', + 'componentTrees', + 'workflows', + 'lambdas', +] as const + +const itemChangeActionNames = ['addItem', 'updateItem', 'removeItem'] as const + +export const itemChangeActionTypes = new Set( + itemSlices.flatMap((slice) => + itemChangeActionNames.map((actionName) => `${slice}/${actionName}`) + ) +) + +export const persistenceSingleItemActionNames = new Set([ + 'addItem', + 'updateItem', + 'saveFile', + 'saveModel', + 'saveComponent', + 'saveComponentTree', + 'saveWorkflow', + 'saveLambda', +]) + +export const persistenceBulkActionNames = new Set([ + 'addItems', + 'setItems', + 'setFiles', + 'setModels', + 'setComponents', + 'setComponentTrees', + 'setWorkflows', + 'setLambdas', +]) + +export const persistenceDeleteActionNames = new Set([ + 'removeItem', + 'deleteFile', + 'deleteModel', + 'deleteComponent', + 'deleteComponentTree', + 'deleteWorkflow', + 'deleteLambda', +]) diff --git a/src/store/middleware/autoSyncMiddleware.ts b/src/store/middleware/autoSyncMiddleware.ts index 277769c..6be3785 100644 --- a/src/store/middleware/autoSyncMiddleware.ts +++ b/src/store/middleware/autoSyncMiddleware.ts @@ -1,6 +1,7 @@ import { Middleware } from '@reduxjs/toolkit' import { syncToFlaskBulk, checkFlaskConnection } from '../slices/syncSlice' import { RootState } from '../index' +import { itemChangeActionTypes } from '../actionNames' interface AutoSyncConfig { enabled: boolean @@ -127,28 +128,7 @@ export const createAutoSyncMiddleware = (): Middleware => { }) } - const changeActions = [ - 'files/addItem', - 'files/updateItem', - 'files/removeItem', - 'models/addItem', - 'models/updateItem', - 'models/removeItem', - 'components/addItem', - 'components/updateItem', - 'components/removeItem', - 'componentTrees/addItem', - 'componentTrees/updateItem', - 'componentTrees/removeItem', - 'workflows/addItem', - 'workflows/updateItem', - 'workflows/removeItem', - 'lambdas/addItem', - 'lambdas/updateItem', - 'lambdas/removeItem', - ] - - if (changeActions.includes(action.type)) { + if (itemChangeActionTypes.has(action.type)) { autoSyncManager.trackChange() } diff --git a/src/store/middleware/persistenceMiddleware.ts b/src/store/middleware/persistenceMiddleware.ts index 7d20c2e..3b9e902 100644 --- a/src/store/middleware/persistenceMiddleware.ts +++ b/src/store/middleware/persistenceMiddleware.ts @@ -2,6 +2,11 @@ import { Middleware } from '@reduxjs/toolkit' import { db } from '@/lib/db' import { syncToFlask } from './flaskSync' import { RootState } from '../index' +import { + persistenceBulkActionNames, + persistenceDeleteActionNames, + persistenceSingleItemActionNames, +} from '../actionNames' interface PersistenceConfig { storeName: string @@ -128,10 +133,7 @@ export const createPersistenceMiddleware = (): Middleware => { if (!sliceState) return result try { - if (actionName === 'addItem' || actionName === 'updateItem' || actionName === 'saveFile' || - actionName === 'saveModel' || actionName === 'saveComponent' || actionName === 'saveComponentTree' || - actionName === 'saveWorkflow' || actionName === 'saveLambda') { - + if (persistenceSingleItemActionNames.has(actionName)) { const item = action.payload if (item && item.id) { persistenceQueue.enqueue({ @@ -144,10 +146,7 @@ export const createPersistenceMiddleware = (): Middleware => { } } - if (actionName === 'addItems' || actionName === 'setItems' || actionName === 'setFiles' || - actionName === 'setModels' || actionName === 'setComponents' || actionName === 'setComponentTrees' || - actionName === 'setWorkflows' || actionName === 'setLambdas') { - + if (persistenceBulkActionNames.has(actionName)) { const items = action.payload if (Array.isArray(items)) { items.forEach((item: any) => { @@ -164,10 +163,7 @@ export const createPersistenceMiddleware = (): Middleware => { } } - if (actionName === 'removeItem' || actionName === 'deleteFile' || actionName === 'deleteModel' || - actionName === 'deleteComponent' || actionName === 'deleteComponentTree' || - actionName === 'deleteWorkflow' || actionName === 'deleteLambda') { - + if (persistenceDeleteActionNames.has(actionName)) { const itemId = typeof action.payload === 'string' ? action.payload : action.payload?.id if (itemId) { persistenceQueue.enqueue({