pinafore/routes/_store/store.js

52 lines
1.2 KiB
JavaScript
Raw Normal View History

2018-02-08 17:15:25 +00:00
import { observers } from './observers'
2018-01-28 21:09:39 +00:00
import { computations } from './computations'
import { mixins } from './mixins'
import { LocalStorageStore } from './LocalStorageStore'
const KEYS_TO_STORE_IN_LOCAL_STORAGE = new Set([
2018-02-09 06:29:29 +00:00
'currentInstance',
'currentRegisteredInstance',
'currentRegisteredInstanceName',
'instanceNameInSearch',
'instanceThemes',
'loggedInInstances',
'loggedInInstancesInOrder',
'autoplayGifs',
'markMediaAsSensitive',
2018-02-26 00:26:43 +00:00
'pinnedPages',
'inputTextInCompose'
2018-01-28 21:09:39 +00:00
])
class PinaforeStore extends LocalStorageStore {
2018-02-09 06:29:29 +00:00
constructor (state) {
2018-01-28 21:09:39 +00:00
super(state, KEYS_TO_STORE_IN_LOCAL_STORAGE)
}
}
2018-02-20 04:15:24 +00:00
export const store = new PinaforeStore({
2018-01-28 21:09:39 +00:00
instanceNameInSearch: '',
2018-02-07 04:54:49 +00:00
queryInSearch: '',
2018-01-28 21:09:39 +00:00
currentInstance: null,
loggedInInstances: {},
loggedInInstancesInOrder: [],
instanceThemes: {},
spoilersShown: {},
sensitivesShown: {},
autoplayGifs: false,
markMediaAsSensitive: false,
2018-02-08 17:15:25 +00:00
pinnedPages: {},
2018-02-11 18:35:25 +00:00
instanceLists: {},
2018-02-11 21:46:57 +00:00
pinnedStatuses: {},
2018-02-24 02:23:36 +00:00
instanceInfos: {},
2018-02-26 00:26:43 +00:00
statusModifications: {},
inputTextInCompose: {}
2018-01-28 21:09:39 +00:00
})
mixins(PinaforeStore)
computations(store)
2018-02-21 05:29:59 +00:00
observers(store)
2018-01-28 21:09:39 +00:00
2018-02-20 04:15:24 +00:00
if (process.browser && process.env.NODE_ENV !== 'production') {
window.store = store // for debugging
2018-02-20 04:28:31 +00:00
}