This repository has been archived on 2025-07-31. You can view files and clone it, but cannot push or open issues or pull requests.
Files
terminally-online/src/state/index.ts
2023-07-23 20:20:11 +03:00

83 lines
1.8 KiB
TypeScript

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 memesReducer from './memes';
import tagsReducer from './tags';
import navigationReducer from './navigation';
const rootReducer = combineReducers({
settings: settingsReducer,
memes: memesReducer,
tags: tagsReducer,
navigation: navigationReducer,
});
interface RootState {
settings: ReturnType<typeof settingsReducer>;
memes: ReturnType<typeof memesReducer>;
tags: ReturnType<typeof tagsReducer>;
navigation: ReturnType<typeof navigationReducer>;
}
const persistConfig = {
key: 'root',
storage: createRealmPersistStorage({ path: 'redux.realm' }),
blacklist: ['navigation'],
};
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,
setStorageUri,
setNoMedia,
setMasonryColumns,
setGridColumns,
validateSettings,
} from './settings';
export {
type MemesState,
setMemesSort,
setMemesSortDirection,
toggleMemesSortDirection,
setMemesView,
cycleMemesView,
setMemesFavoritesOnly,
toggleMemesFavoritesOnly,
setMemesFilter,
} from './memes';
export {
type TagsState,
setTagsSort,
setTagsSortDirection,
toggleTagsSortDirection,
} from './tags';
export {
type NavigationState,
setNavVisible,
toggleNavVisible,
} from './navigation';