aboutsummaryrefslogtreecommitdiff
path: root/src/lib/persisted_state.js
diff options
context:
space:
mode:
authorHenry <spam@hjkos.com>2018-09-21 09:19:02 +0000
committerHenry <spam@hjkos.com>2018-09-21 09:19:02 +0000
commitcd48268c858f4a7f24767e41e81cb6524393c5e6 (patch)
tree64020b07266815f88990274c5ad5ee134f04d5f1 /src/lib/persisted_state.js
parent6f32ccf41717c2b59404c04ab0b0cb4b8c8171e3 (diff)
parent1c2f0029e4835a34a94aba2aac7eeff592aa0d95 (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.js42
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)