diff options
| author | Henry <spam@hjkos.com> | 2018-09-21 09:19:02 +0000 |
|---|---|---|
| committer | Henry <spam@hjkos.com> | 2018-09-21 09:19:02 +0000 |
| commit | cd48268c858f4a7f24767e41e81cb6524393c5e6 (patch) | |
| tree | 64020b07266815f88990274c5ad5ee134f04d5f1 /src/lib/persisted_state.js | |
| parent | 6f32ccf41717c2b59404c04ab0b0cb4b8c8171e3 (diff) | |
| parent | 1c2f0029e4835a34a94aba2aac7eeff592aa0d95 (diff) | |
Merge branch 'betterStorage' into 'develop'
Better storage
See merge request pleroma/pleroma-fe!343
Diffstat (limited to 'src/lib/persisted_state.js')
| -rw-r--r-- | src/lib/persisted_state.js | 42 |
1 files changed, 31 insertions, 11 deletions
diff --git a/src/lib/persisted_state.js b/src/lib/persisted_state.js index 60811e65..006107e2 100644 --- a/src/lib/persisted_state.js +++ b/src/lib/persisted_state.js @@ -1,7 +1,7 @@ import merge from 'lodash.merge' import objectPath from 'object-path' import localforage from 'localforage' -import { throttle, each } from 'lodash' +import { each } from 'lodash' let loaded = false @@ -12,18 +12,18 @@ const defaultReducer = (state, paths) => ( }, {}) ) +const saveImmedeatelyActions = [ + 'markNotificationsAsSeen', + 'clearCurrentUser', + 'setCurrentUser', + 'setHighlight', + 'setOption' +] + const defaultStorage = (() => { return localforage })() -const defaultSetState = (key, state, storage) => { - if (!loaded) { - console.log('waiting for old state to be loaded...') - } else { - return storage.setItem(key, state) - } -} - export default function createPersistedState ({ key = 'vuex-lz', paths = [], @@ -31,7 +31,14 @@ export default function createPersistedState ({ let value = storage.getItem(key) return value }, - setState = throttle(defaultSetState, 60000), + setState = (key, state, storage) => { + if (!loaded) { + console.log('waiting for old state to be loaded...') + return Promise.resolve() + } else { + return storage.setItem(key, state) + } + }, reducer = defaultReducer, storage = defaultStorage, subscriber = store => handler => store.subscribe(handler) @@ -72,7 +79,20 @@ export default function createPersistedState ({ subscriber(store)((mutation, state) => { try { - setState(key, reducer(state, paths), storage) + if (saveImmedeatelyActions.includes(mutation.type)) { + setState(key, reducer(state, paths), storage) + .then(success => { + if (typeof success !== 'undefined') { + if (mutation.type === 'setOption') { + store.dispatch('settingsSaved', { success }) + } + } + }, error => { + if (mutation.type === 'setOption') { + store.dispatch('settingsSaved', { error }) + } + }) + } } catch (e) { console.log("Couldn't persist state:") console.log(e) |
