aboutsummaryrefslogtreecommitdiff
path: root/src/lib/persisted_state.js
diff options
context:
space:
mode:
authorShpuld Shpuldson <shpuld@gmail.com>2017-06-15 23:25:19 +0300
committerShpuld Shpuldson <shpuld@gmail.com>2017-06-15 23:25:19 +0300
commite0e8965c08c09fee16d17e312c3788e13cdd1c88 (patch)
tree53e6c4eebd4328f868c2d3f6eb0b26b3c3e1951d /src/lib/persisted_state.js
parent44923afbee23ef7bd22c20d25bf7776b284f5f88 (diff)
parent7d46e3965d06e039537066eeb5fac99ebcab978d (diff)
update branch and fix merge conflicts
Diffstat (limited to 'src/lib/persisted_state.js')
-rw-r--r--src/lib/persisted_state.js34
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
}
})