diff options
| author | Shpuld Shpuldson <shpuld@gmail.com> | 2017-06-15 23:25:19 +0300 |
|---|---|---|
| committer | Shpuld Shpuldson <shpuld@gmail.com> | 2017-06-15 23:25:19 +0300 |
| commit | e0e8965c08c09fee16d17e312c3788e13cdd1c88 (patch) | |
| tree | 53e6c4eebd4328f868c2d3f6eb0b26b3c3e1951d /src/lib/persisted_state.js | |
| parent | 44923afbee23ef7bd22c20d25bf7776b284f5f88 (diff) | |
| parent | 7d46e3965d06e039537066eeb5fac99ebcab978d (diff) | |
update branch and fix merge conflicts
Diffstat (limited to 'src/lib/persisted_state.js')
| -rw-r--r-- | src/lib/persisted_state.js | 34 |
1 files changed, 23 insertions, 11 deletions
diff --git a/src/lib/persisted_state.js b/src/lib/persisted_state.js index a47ad7d5..02349e13 100644 --- a/src/lib/persisted_state.js +++ b/src/lib/persisted_state.js @@ -3,6 +3,8 @@ import objectPath from 'object-path' import localforage from 'localforage' import { throttle, each } from 'lodash' +let loaded = false + const defaultReducer = (state, paths) => ( paths.length === 0 ? state : paths.reduce((substate, path) => { objectPath.set(substate, path, objectPath.get(state, path)) @@ -15,7 +17,11 @@ const defaultStorage = (() => { })() const defaultSetState = (key, state, storage) => { - return storage.setItem(key, state) + if (!loaded) { + console.log('waiting for old state to be loaded...') + } else { + return storage.setItem(key, state) + } } export default function createPersistedState ({ @@ -32,17 +38,23 @@ export default function createPersistedState ({ } = {}) { return store => { getState(key, storage).then((savedState) => { - if (typeof savedState === 'object') { - // build user cache - const usersState = savedState.users || {} - usersState.usersObject = {} - const users = usersState.users || [] - each(users, (user) => { usersState.usersObject[user.id] = user }) - savedState.users = usersState + try { + if (typeof savedState === 'object') { + // build user cache + const usersState = savedState.users || {} + usersState.usersObject = {} + const users = usersState.users || [] + each(users, (user) => { usersState.usersObject[user.id] = user }) + savedState.users = usersState - store.replaceState( - merge({}, store.state, savedState) - ) + store.replaceState( + merge({}, store.state, savedState) + ) + } + loaded = true + } catch (e) { + console.log("Couldn't load state") + loaded = true } }) |
