Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F12552699
persisted_state.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Size
2 KB
Referenced Files
None
Subscribers
None
persisted_state.js
View Options
import
merge
from
'lodash.merge'
import
localforage
from
'localforage'
import
{
each
,
get
,
set
}
from
'lodash'
let
loaded
=
false
const
defaultReducer
=
(
state
,
paths
)
=>
(
paths
.
length
===
0
?
state
:
paths
.
reduce
((
substate
,
path
)
=>
{
set
(
substate
,
path
,
get
(
state
,
path
))
return
substate
},
{})
)
const
saveImmedeatelyActions
=
[
'markNotificationsAsSeen'
,
'clearCurrentUser'
,
'setCurrentUser'
,
'setHighlight'
,
'setOption'
,
'setClientData'
,
'setToken'
,
'clearToken'
]
const
defaultStorage
=
(()
=>
{
return
localforage
})()
export
default
function
createPersistedState
({
key
=
'vuex-lz'
,
paths
=
[],
getState
=
(
key
,
storage
)
=>
{
let
value
=
storage
.
getItem
(
key
)
return
value
},
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
)
}
=
{})
{
return
getState
(
key
,
storage
).
then
((
savedState
)
=>
{
return
store
=>
{
try
{
if
(
savedState
!==
null
&&
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
)
)
}
loaded
=
true
}
catch
(
e
)
{
console
.
log
(
"Couldn't load state"
)
console
.
error
(
e
)
loaded
=
true
}
subscriber
(
store
)((
mutation
,
state
)
=>
{
try
{
if
(
saveImmedeatelyActions
.
includes
(
mutation
.
type
))
{
setState
(
key
,
reducer
(
state
,
paths
),
storage
)
.
then
(
success
=>
{
if
(
typeof
success
!==
'undefined'
)
{
if
(
mutation
.
type
===
'setOption'
||
mutation
.
type
===
'setCurrentUser'
)
{
store
.
dispatch
(
'settingsSaved'
,
{
success
})
}
}
},
error
=>
{
if
(
mutation
.
type
===
'setOption'
||
mutation
.
type
===
'setCurrentUser'
)
{
store
.
dispatch
(
'settingsSaved'
,
{
error
})
}
})
}
}
catch
(
e
)
{
console
.
log
(
"Couldn't persist state:"
)
console
.
log
(
e
)
}
})
}
})
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, Nov 15, 1:03 AM (1 d, 12 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
574405
Default Alt Text
persisted_state.js (2 KB)
Attached To
Mode
rPUFE pleroma-fe-upstream
Attached
Detach File
Event Timeline
Log In to Comment