import { RootState, SavedState } from "./root"; import { Module, Plugin, Store } from "vuex"; import * as utils from "../utils"; export interface Favourite { name: string; state: SavedState; } export interface FavouritesState { favourites: Favourite[]; } const favourites: Module = { namespaced: true, state: { favourites: [] }, mutations: { add(state, favourite: Favourite) { state.favourites.push(favourite); }, remove(state, favourite: Favourite) { state.favourites = state.favourites.filter(f => f != favourite); } } }; export const localStorageSaver = (path: string, key: string): Plugin => (store: Store) => { utils.set(store.state, path, JSON.parse(window.localStorage.getItem(key) || '[]')); store.subscribe((mutation, state) => { window.localStorage.setItem(key, JSON.stringify(utils.get(state, path))); }) }; export default favourites;