diff -r 1f340f3597a8 -r ea92f4fe783d client/src/store/configureStore.js --- 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 }; };