diff --git a/frontend/src/renderer/src/store/index.ts b/frontend/src/renderer/src/store/index.ts index cc3ef78..222441a 100644 --- a/frontend/src/renderer/src/store/index.ts +++ b/frontend/src/renderer/src/store/index.ts @@ -3,7 +3,17 @@ import { combineReducers, configureStore } from '@reduxjs/toolkit' import { useDispatch, useSelector, useStore } from 'react-redux' -import { FLUSH, PAUSE, PERSIST, persistReducer, persistStore, PURGE, REGISTER, REHYDRATE } from 'redux-persist' +import { + createMigrate, + FLUSH, + PAUSE, + PERSIST, + persistReducer, + persistStore, + PURGE, + REGISTER, + REHYDRATE +} from 'redux-persist' import storage from 'redux-persist/lib/storage' import storeSyncService from '../services/StoreSyncService' @@ -15,6 +25,7 @@ import events from './events' import chatHistory from './chat-history' import { getLogger } from '@shared/logger/renderer' +import { migrations } from './migrations' const logger = getLogger('Store') @@ -32,7 +43,8 @@ const persistedReducer = persistReducer( { key: 'vikingdb', storage, - version: 1, + version: 2, + migrate: createMigrate(migrations, { debug: false }), blacklist: ['vault', 'screen', 'chatHistory'] // Do not persist vault, vault data is stored in the sqlite data table }, rootReducer diff --git a/frontend/src/renderer/src/store/migrations.ts b/frontend/src/renderer/src/store/migrations.ts new file mode 100644 index 0000000..17182b4 --- /dev/null +++ b/frontend/src/renderer/src/store/migrations.ts @@ -0,0 +1,26 @@ +import { getLogger } from '@shared/logger/renderer' +import { omit } from 'lodash' + +const logger = getLogger('migrations') + +const migrations = { + 2: (state: any): any => { + logger.info('Running redux-persist migration for version 2...') + + if (!state) { + logger.warn('Migration v2: Received undefined state, returning state as-is.') + return state + } + + const newState = omit(state, ['chatHistory']) + + if (state.chatHistory) { + logger.info('Migration v2: Removed "chatHistory" from persisted state.') + } else { + logger.info('Migration v2: "chatHistory" not found in state, nothing to remove.') + } + + return newState + } +} +export { migrations }