import Vue from "vue"; import Vuex from "vuex"; Vue.use(Vuex); const store = new Vuex.Store({ state: { version: undefined, menu: undefined, systemState: {}, scrypted: { devices: [], alerts: [] }, username: undefined, isLoggedIn: undefined, isLoggedIntoCloud: undefined, isConnected: undefined, hasLogin: undefined }, mutations: { setSystemState: function (store, systemState) { store.systemState = systemState; }, setDevices(store, devices) { store.scrypted.devices = devices; }, setAlerts(store, alerts) { store.scrypted.alerts = alerts; }, removeAlert(store, alertId) { store.scrypted.alerts = store.scrypted.alerts.filter( alert => alert._id != alertId ); }, addAlert(store, alert) { const alerts = store.scrypted.alerts.filter( existing => existing.id != alert.id ); alerts.push(alert); store.scrypted.alerts = alerts; }, addDevice(store, id) { var devices = store.scrypted.devices.filter(device => device !== id); devices.push(id); store.scrypted.devices = devices; }, removeDevice(store, id) { store.scrypted.devices = store.scrypted.devices.filter( device => device !== id ); }, setIsLoggedIntoCloud(store, isLoggedIntoCloud) { store.isLoggedIntoCloud = isLoggedIntoCloud; }, setIsLoggedIn(store, isLoggedIn) { store.isLoggedIn = isLoggedIn; }, setUsername(store, username) { store.username = username; }, setIsConnected(store, isConnected) { store.isConnected = isConnected; }, setHasLogin(store, hasLogin) { store.hasLogin = hasLogin; }, setVersion(store, version) { store.version = version; }, setMenu(store, menu) { Vue.set(store, 'menu', menu); }, clearMenu(store) { Vue.delete(store, 'menu'); } } }); export interface Menu { title: string; subtitle?: string; icon?: string; click: Function; } export default store;