Add home screen state persistence

Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
This commit is contained in:
2023-07-11 21:29:49 +03:00
parent 99195fe481
commit 5518fba787
11 changed files with 154 additions and 70 deletions

61
src/state/index.ts Normal file
View File

@@ -0,0 +1,61 @@
import { configureStore, combineReducers } from '@reduxjs/toolkit';
import {
persistReducer,
persistStore,
FLUSH,
REHYDRATE,
PAUSE,
PERSIST,
PURGE,
REGISTER,
} from 'redux-persist';
import { createRealmPersistStorage } from '@bankify/redux-persist-realm';
import settingsReducer from './settings';
import homeReducer from './home';
const rootReducer = combineReducers({
settings: settingsReducer,
home: homeReducer,
});
interface RootState {
settings: ReturnType<typeof settingsReducer>;
home: ReturnType<typeof homeReducer>;
}
const persistConfig = {
key: 'root',
storage: createRealmPersistStorage({ path: 'redux.realm' }),
};
const persistedReducer = persistReducer(persistConfig, rootReducer);
const store = configureStore({
reducer: persistedReducer,
middleware: getDefaultMiddleware =>
getDefaultMiddleware({
serializableCheck: {
ignoredActions: [FLUSH, REHYDRATE, PAUSE, PERSIST, PURGE, REGISTER],
},
}),
});
const persistor = persistStore(store);
export { type RootState, store, persistor };
export {
type SettingsState,
updateStorageUri,
updateNoMedia,
validateSettings,
} from './settings';
export {
type HomeState,
setSort,
setSortDirection,
toggleSortDirection,
setView,
cycleView,
setFavoritesOnly,
toggleFavoritesOnly,
} from './home';