2016-12-06 23:23:35 +00:00
|
|
|
var NAMESPACE = 'emoji-mart'
|
2016-07-06 17:34:04 +00:00
|
|
|
|
2017-10-07 04:02:02 +00:00
|
|
|
var isLocalStorageSupported =
|
|
|
|
typeof window !== 'undefined' && 'localStorage' in window
|
2016-10-04 00:49:35 +00:00
|
|
|
|
2017-11-03 00:57:29 +00:00
|
|
|
let getter
|
|
|
|
let setter
|
|
|
|
|
|
|
|
function setHandlers(handlers) {
|
|
|
|
handlers || (handlers = {})
|
|
|
|
|
|
|
|
getter = handlers.getter
|
|
|
|
setter = handlers.setter
|
|
|
|
}
|
|
|
|
|
|
|
|
function setNamespace(namespace) {
|
|
|
|
NAMESPACE = namespace
|
|
|
|
}
|
|
|
|
|
2016-07-06 17:34:04 +00:00
|
|
|
function update(state) {
|
|
|
|
for (let key in state) {
|
|
|
|
let value = state[key]
|
|
|
|
set(key, value)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function set(key, value) {
|
2017-11-03 00:57:29 +00:00
|
|
|
if (setter) {
|
|
|
|
setter(key, value)
|
|
|
|
} else {
|
|
|
|
if (!isLocalStorageSupported) return
|
|
|
|
try {
|
2019-12-30 17:07:47 +00:00
|
|
|
window.localStorage[`${NAMESPACE}.${key}`] = JSON.stringify(value)
|
2017-11-03 00:57:29 +00:00
|
|
|
} catch (e) {}
|
|
|
|
}
|
2016-07-06 17:34:04 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
function get(key) {
|
2017-11-03 00:57:29 +00:00
|
|
|
if (getter) {
|
|
|
|
return getter(key)
|
|
|
|
} else {
|
|
|
|
if (!isLocalStorageSupported) return
|
|
|
|
try {
|
|
|
|
var value = window.localStorage[`${NAMESPACE}.${key}`]
|
2019-12-21 17:17:41 +00:00
|
|
|
|
|
|
|
if (value) {
|
2019-12-30 17:07:47 +00:00
|
|
|
return JSON.parse(value)
|
2019-12-21 17:17:41 +00:00
|
|
|
}
|
2017-11-03 00:57:29 +00:00
|
|
|
} catch (e) {
|
|
|
|
return
|
|
|
|
}
|
2016-07-06 17:34:04 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2017-11-03 00:57:29 +00:00
|
|
|
export default { update, set, get, setNamespace, setHandlers }
|