Files
lens/src/renderer/store/index.js
T
Jari Kolehmainen d057cb17c6 Lens app source code (#119)
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
Signed-off-by: Cody Belcher <cody.t.belcher@gmail.com>
2020-04-16 11:23:35 -05:00

90 lines
2.5 KiB
JavaScript

import Vue from 'vue'
import Vuex from 'vuex'
import { userStore } from "../../common/user-store"
import KubeContexts from './modules/kube-contexts'
import Clusters from './modules/clusters'
import HelmRepos from './modules/helm-repos'
import Workspaces from './modules/workspaces'
import * as semver from "semver"
import * as appUtil from "../../common/app-utils"
// promise ipc
import { PromiseIpc } from 'electron-promise-ipc'
const promiseIpc = new PromiseIpc( { maxTimeoutMs: 120000 } );
// tracker
import { Tracker } from "../../common/tracker"
import { remote } from "electron"
const tracker = new Tracker(remote.app);
Vue.use(Vuex);
export default new Vuex.Store({
modules: {
Clusters,
HelmRepos,
KubeContexts,
Workspaces
},
state: {
preferences: {},
hud: {
isMenuVisible: true,
},
seenContexts: userStore.getSeenContexts(),
lastSeenAppVersion: userStore.lastSeenAppVersion(),
},
mutations: {
storeSeenContexts(state, context) {
const seenContexts = userStore.storeSeenContext(context);
state.seenContexts = seenContexts
},
updateLastSeenAppVersion(state, appVersion) {
state.lastSeenAppVersion = appVersion;
userStore.setLastSeenAppVersion(appVersion)
},
loadPreferences(state) {
this.commit("savePreferences", userStore.getPreferences());
},
savePreferences(state, prefs) {
state.preferences = prefs;
userStore.setPreferences(prefs);
this.dispatch("destroyWebviews")
promiseIpc.send("preferencesSaved")
},
hideMenu(state) {
state.hud.isMenuVisible = false;
},
showMenu(state) {
state.hud.isMenuVisible = true;
}
},
actions: {
async init({commit, getters}) {
commit("loadPreferences");
await this.dispatch('refreshClusters', getters.currentWorkspace);
return true;
},
async addSeenContexts({commit}, data){
commit('storeSeenContexts', data);
},
async updateLastSeenAppVersion({commit, state}) {
tracker.event("app", "whats-new-seen")
commit("updateLastSeenAppVersion", appUtil.getAppVersion())
}
},
getters : {
seenContexts: state => state.seenContexts,
hud: state => state.hud,
isMenuVisible: function(state, getters){
return state.hud.isMenuVisible && !getters.showWhatsNew;
},
showWhatsNew: function(state) {
return semver.gt(appUtil.getAppVersion(), state.lastSeenAppVersion);
},
preferences: state => state.preferences,
}
});