pinafore/routes/_utils/store.js

37 lines
749 B
JavaScript

import { Store } from 'svelte/store.js'
const key = 'ui-store'
class LocalStorageStore extends Store {
constructor(state) {
super(state)
if (process.browser) {
let cached = localStorage.getItem(key)
if (cached) {
this.set(JSON.parse(cached))
}
}
}
save() {
if (process.browser) {
localStorage.setItem(key, JSON.stringify(this._state))
}
}
}
const store = new LocalStorageStore({
instanceNameInSearch: ''
})
store.compute(
'isUserLoggedIn',
['currentOauthInstance'],
currentOauthInstance => !!currentOauthInstance && currentOauthInstance.access_token
)
if (process.browser && process.env.NODE_ENV !== 'production') {
window.store = store // for debugging
}
export { store }