Add migrations for the store

This commit is contained in:
Lei Nelissen
2022-01-03 09:07:30 +01:00
parent 9bf20b1762
commit 56971a9291
3 changed files with 27 additions and 9 deletions

View File

@@ -7,7 +7,7 @@ interface State {
ids: EntityId[];
}
const initialState: State = {
export const initialState: State = {
entities: {},
ids: [],
};

View File

@@ -1,19 +1,32 @@
import { configureStore, getDefaultMiddleware, combineReducers } from '@reduxjs/toolkit';
import { useSelector, TypedUseSelectorHook, useDispatch } from 'react-redux';
import AsyncStorage from '@react-native-community/async-storage';
import { persistStore, persistReducer, PersistConfig } from 'redux-persist';
import { persistStore, persistReducer, PersistConfig, createMigrate } from 'redux-persist';
import autoMergeLevel2 from 'redux-persist/es/stateReconciler/autoMergeLevel2';
import settings from './settings';
import music, { initialState as musicInitialState } from './music';
import downloads, { initialState as downloadsInitialState } from './downloads';
import { PersistState } from 'redux-persist/es/types';
const persistConfig: PersistConfig<AppState> = {
key: 'root',
storage: AsyncStorage,
stateReconciler: autoMergeLevel2
version: 1,
stateReconciler: autoMergeLevel2,
migrate: createMigrate({
// @ts-expect-error migrations are poorly typed
1: (state: AppState & PersistState) => {
return {
...state,
settings: state.settings,
downloads: downloadsInitialState,
music: musicInitialState
};
}
})
};
import settings from './settings';
import music from './music';
import downloads from './downloads';
const reducers = combineReducers({
settings,
music: music.reducer,
@@ -22,11 +35,16 @@ const reducers = combineReducers({
const persistedReducer = persistReducer(persistConfig, reducers);
const middlewares = [];
if (__DEV__) {
middlewares.push(require('redux-flipper').default());
}
const store = configureStore({
reducer: persistedReducer,
middleware: getDefaultMiddleware({ serializableCheck: false, immutableCheck: false }).concat(
// logger,
__DEV__ ? require('redux-flipper').default() : undefined,
...middlewares,
),
});

View File

@@ -35,7 +35,7 @@ export interface State {
}
}
const initialState: State = {
export const initialState: State = {
albums: {
...albumAdapter.getInitialState(),
isLoading: false,