mirror of
https://github.com/koush/scrypted.git
synced 2026-02-12 10:02:04 +00:00
87 lines
2.0 KiB
TypeScript
87 lines
2.0 KiB
TypeScript
|
|
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; |