--- a/client/src/store/configureStore.js Tue Oct 09 19:07:47 2018 +0200
+++ b/client/src/store/configureStore.js Mon Oct 08 18:35:47 2018 +0200
@@ -4,16 +4,10 @@
import rootSyncSaga from '../sagas/syncSaga';
import networkSaga from '../sagas/networkSaga';
import { compose, createStore, applyMiddleware } from 'redux';
-import { routerMiddleware } from 'react-router-redux';
-import createSagaMiddleware from 'redux-saga'
-import Immutable from 'immutable';
-import {persistStore, autoRehydrate} from 'redux-persist-immutable'
+import { connectRouter, routerMiddleware } from 'connected-react-router'
+import createSagaMiddleware from 'redux-saga';
+import { persistStore, persistReducer } from 'redux-persist';
import localForage from 'localforage';
-import immutableTransform from 'redux-persist-transform-immutable';
-import NoteRecord from './noteRecord';
-import SessionRecord from './sessionRecord';
-import UserRecord from './userRecord';
-import GroupRecord from './groupRecord';
import APIClient from '../api/APIClient';
import config from '../config';
import asyncRequest from '../constants/asyncRequest';
@@ -25,52 +19,43 @@
const defaultState = {
- sessions: Immutable.List([]),
- notes: Immutable.List([]),
- groups: Immutable.List([]),
- status: Immutable.Map({
+ sessions: [],
+ notes: [],
+ groups: [],
+ status: {
isSynchronizing: false,
online: false
- }),
- authStatus: Immutable.Map({
+ },
+ authStatus: {
token: '',
isAuthenticated: false,
clientId: null,
lastSync: 0,
currentUser: null,
currentGroup: null
- }),
+ },
autoSubmit: false,
login: asyncRequest,
register: asyncRequest,
createGroup: asyncRequest
};
-const immutableTransformConfig = {
- records: [NoteRecord, SessionRecord, UserRecord, GroupRecord],
- whitelist: ['sessions', 'notes', 'authStatus', 'groups']
-}
-
const persistOptions = {
+ key: 'root',
storage: localForage,
- records: [NoteRecord, SessionRecord, UserRecord, GroupRecord],
- transforms: [immutableTransform(immutableTransformConfig)],
whitelist: ['sessions', 'notes', 'autoSubmit', 'authStatus', 'groups']
}
const apiClient = new APIClient(config.apiRootUrl);
-const storeInitialState = Immutable.Map({ ...defaultState });
-
+export default (history, initialState = defaultState) => {
-export default (history, initialState = storeInitialState) => {
-
+ const persistedReducer = connectRouter(history)(persistReducer(persistOptions, rootReducer));
const router = routerMiddleware(history);
const saga = createSagaMiddleware();
- const store = createStore(rootReducer, initialState, composeEnhancers(
+ const store = createStore(persistedReducer, initialState, composeEnhancers(
applyMiddleware(router, saga),
- autoRehydrate()
));
apiClient.setStore(store);
@@ -80,12 +65,13 @@
history
}
- persistStore(store, persistOptions);
+ const persistor = persistStore(store, null, () => {
+ saga.run(rootAuthSaga, context);
+ saga.run(rootGroupSaga, context);
+ saga.run(rootSyncSaga, context);
+ saga.run(networkSaga, context);
+ });
- saga.run(rootAuthSaga, context);
- saga.run(rootGroupSaga, context);
- saga.run(rootSyncSaga, context);
- saga.run(networkSaga, context);
- return store;
+ return { store, persistor };
};