antares/src/renderer/stores/application.ts

62 lines
2.0 KiB
TypeScript

import { defineStore } from 'pinia';
import * as Store from 'electron-store';
import { Ace } from 'ace-builds';
const persistentStore = new Store({ name: 'settings' });
export const useApplicationStore = defineStore('application', {
state: () => ({
appName: 'Antares - SQL Client',
appVersion: process.env.PACKAGE_VERSION || '0',
cachedVersion: persistentStore.get('cached_version', '0') as string,
isLoading: false,
isNewModal: false,
isSettingModal: false,
isScratchpad: false,
selectedSettingTab: 'general',
selectedConection: {},
updateStatus: 'noupdate', // 'noupdate' | 'available' | 'checking' | 'nocheck' | 'downloading' | 'downloaded' | 'disabled'
downloadProgress: 0,
baseCompleter: [] as Ace.Completer[] // Needed to reset ace editor, due global-only ace completer
}),
getters: {
getBaseCompleter: state => state.baseCompleter,
getSelectedConnection: state => state.selectedConection,
getDownloadProgress: state => Number(state.downloadProgress.toFixed(1))
},
actions: {
checkVersionUpdate () {
if (this.appVersion !== this.cachedVersion) {
this.showSettingModal('changelog');
this.cachedVersion = this.appVersion;
persistentStore.set('cached_version', this.cachedVersion);
}
},
setLoadingStatus (payload: boolean) {
this.isLoading = payload;
},
setBaseCompleters (payload: Ace.Completer[]) {
this.baseCompleter = payload;
},
// Modals
showNewConnModal () {
this.isNewModal = true;
},
hideNewConnModal () {
this.isNewModal = false;
},
showSettingModal (tab: string) {
this.selectedSettingTab = tab;
this.isSettingModal = true;
},
hideSettingModal () {
this.isSettingModal = false;
},
showScratchpad () {
this.isScratchpad = true;
},
hideScratchpad () {
this.isScratchpad = false;
}
}
});