import Vue from "vue"; import Vuex from "vuex"; import createPersistedState from "vuex-persistedstate"; /* Xeslint-disable */ const MaxLogLength = 100; Vue.use(Vuex); //reset all local settings via url in case of fucked up situation if (window.location.search) { var searchParams = new URLSearchParams(window.location.search); if (searchParams.has("reset")) { localStorage.removeItem("AyaNova"); console.log("RESET LOCAL SETTINGS"); } } export default new Vuex.Store({ plugins: [createPersistedState({ key: "AyaNova" })], state: { lastClientVersion: "", authenticated: false, apiUrl: "", helpUrl: "", apiToken: "-", downloadToken: "-", userId: 0, userName: "NOT AUTHENTICATED", roles: 0, userType: 0, homePage: undefined, translationText: {}, enums: {}, //all enum values with translated text to match stored as key e.g. enums:={AuthorizationRoles:{0:"no role",1:"Limited role"},UserTypes:{0:"Technician",1:"Client user"}} userOptions: { languageOverride: "en-US", timeZoneOverride: "America/New_York", currencyName: "USD", hour12: true, uiColor: "#000000", emailAddress: null }, globalSettings: {}, navItems: [], logArray: [], formSettings: {}, //this is the settings on forms that survive a refresh like grid number of items to show etc formCustomTemplate: {}, //this is the custom fields settings for forms, darkMode: false, knownPassword: false, newNotificationCount: 0 }, getters: { isOutsideUser: state => { return state.userType == 3 || state.userType == 4; } }, mutations: { setLastClientVersion(state, data) { state.lastClientVersion = data; }, login(state, data) { // mutate state state.authenticated = data.authenticated; state.userId = data.userId; state.roles = data.roles; state.apiToken = data.apiToken; state.userName = data.userName; state.userType = data.userType; state.downloadToken = data.dlt; }, logout(state) { //Things that are reset on logout state.apiToken = "-"; state.downloadToken = "-"; state.authenticated = false; state.userId = 0; state.userName = "NOT AUTHENTICATED"; state.roles = 0; state.userType = 0; state.homePage = undefined; state.navItems = []; state.translationText = {}; state.enums = {}; state.formCustomTemplate = {}; state.apiUrl = ""; state.userOptions.languageOverride = "en-US"; state.userOptions.timeZoneOverride = "America/New_York"; state.userOptions.currencyName = "USD"; state.userOptions.hour12 = true; state.userOptions.uiColor = "#000000"; state.userOptions.emailAddress = null; state.globalSettings = {}; state.knownPassword = false; state.newNotificationCount = 0; }, addNavItem(state, data) { state.navItems.push(data); }, setTranslationText(state, data) { state.translationText[data.key] = data.value; }, setFormCustomTemplateItem(state, data) { state.formCustomTemplate[data.formKey + "_concurrencyToken"] = data.concurrency; state.formCustomTemplate[data.formKey] = data.value; }, setUserOptions(state, data) { // mutate state state.userOptions.languageOverride = data.languageOverride; state.userOptions.currencyName = data.currencyName; state.userOptions.hour12 = data.hour12; state.userOptions.timeZoneOverride = data.timeZoneOverride; state.userOptions.emailAddress = data.emailAddress; state.userOptions.uiColor = data.uiColor; }, setGlobalSettings(state, data) { // mutate state state.globalSettings = data; }, setEnum(state, data) { state.enums[data.enumKey] = data.items; //{enumKey:"AuthorizationRoles",items:[{0:"no role"},{1:"Limited role"}]} }, setAPIURL(state, data) { state.apiUrl = data; }, setHelpURL(state, data) { state.helpUrl = data; }, logItem(state, msg) { msg = Date.now() + "|" + msg; state.logArray.push(msg); if (state.logArray.length > MaxLogLength) { //remove beginning elements state.logArray = state.logArray.slice( state.logArray.length - MaxLogLength ); } }, clearAllFormSettings(state) { state.formSettings = {}; }, setFormSettings(state, data) { state.formSettings[data.formKey] = data.formSettings; }, clearFormSettings(state, formKey) { delete state.formSettings[formKey]; }, setHomePage(state, data) { state.homePage = data; }, setDarkMode(state, data) { state.darkMode = data; }, setKnownPassword(state, data) { state.knownPassword = data; }, setNewNotificationCount(state, data) { state.newNotificationCount = data; } }, actions: {} });