1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00
lens/src/renderer/_vue/store/index.js
Roman f4922811cc Merge remote-tracking branch 'origin/master' into lens_restructure
# Conflicts:
#	package.json
#	src/main/index.ts
#	src/renderer/api/__test__/parseAPI.test.ts
#	src/renderer/components/chart/bar-chart.tsx
#	src/renderer/components/chart/chart.tsx
#	src/renderer/components/chart/pie-chart.tsx
#	src/renderer/utils/__tests__/arrays.test.ts
#	src/renderer/utils/arrays.ts
#	yarn.lock
2020-06-22 17:09:07 +03:00

95 lines
2.6 KiB
JavaScript

import Vue from 'vue'
import Vuex from 'vuex'
import semver from "semver"
import { userStore } from "../../../common/user-store"
import { getAppVersion } from "../../../common/utils/app-version"
import KubeContexts from './modules/kube-contexts'
import Clusters from './modules/clusters'
import HelmRepos from './modules/helm-repos'
import Workspaces from './modules/workspaces'
// 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) {
if (prefs.allowTelemetry) {
tracker.event("telemetry", "enabled")
} else {
tracker.event("telemetry", "disabled")
}
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", 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(getAppVersion(), state.lastSeenAppVersion);
},
preferences: state => state.preferences,
}
});