import Vuex from 'vuex'; import messages, { MessagesState } from './messages'; import departures, { DeparturesState } from './departures' import favourites, { FavouritesState, localStorageSaver } from './favourites' import { state, mutations, actions, RootState } from "./root"; import VuexPersistence from "vuex-persist"; import { namespace } from "vuex-class"; export type State = { messages: MessagesState; departures: DeparturesState; favourites: FavouritesState; } & RootState; const localStoragePersist = new VuexPersistence({ reducer: state => ({ favourites: state.favourites }) }); const sessionStoragePersist = new VuexPersistence({ reducer: state => ({ stops: state.stops }), storage: window.sessionStorage }); const store = new Vuex.Store({ state, mutations, actions, modules: { messages, departures, favourites }, plugins: [ // todo: remove after some time localStorageSaver('favourites.favourites', 'favourites'), localStoragePersist.plugin, sessionStoragePersist.plugin, ] }); export default store; export const Favourites = namespace('favourites');