diff --git a/src/App.vue b/src/App.vue index b7544e4..48c9cbb 100644 --- a/src/App.vue +++ b/src/App.vue @@ -7,84 +7,13 @@ import { NMessageProvider, NDialogProvider, } from "naive-ui"; -import { Store } from "@tauri-apps/plugin-store"; -import { KeyMappingConfig } from "./keyMappingConfig"; import { onMounted } from "vue"; -import { useGlobalStore } from "./store/global"; import { useRouter } from "vue-router"; -const store = useGlobalStore(); const router = useRouter(); onMounted(async () => { router.replace({ name: "mask" }); - - const localStore = new Store("store.bin"); - // loading screenSize from local store - const screenSize = await localStore.get<{ sizeW: number; sizeH: number }>( - "screenSize" - ); - if (screenSize !== null) { - store.screenSizeW = screenSize.sizeW; - store.screenSizeH = screenSize.sizeH; - } - - // loading keyMappingConfigList from local store - let keyMappingConfigList = await localStore.get( - "keyMappingConfigList" - ); - if (keyMappingConfigList === null || keyMappingConfigList.length === 0) { - // add empty key mapping config - // unable to get mask element when app is not ready - // so we use the stored mask area to get relative size - const maskArea = await localStore.get<{ - posX: number; - posY: number; - sizeW: number; - sizeH: number; - }>("maskArea"); - let relativeSize = { w: 800, h: 600 }; - if (maskArea !== null) { - relativeSize = { - w: maskArea.sizeW, - h: maskArea.sizeH, - }; - } - keyMappingConfigList = [ - { - relativeSize, - title: "空白方案", - list: [], - }, - ]; - await localStore.set("keyMappingConfigList", keyMappingConfigList); - } - store.keyMappingConfigList = keyMappingConfigList; - - // loading curKeyMappingIndex from local store - let curKeyMappingIndex = await localStore.get("curKeyMappingIndex"); - if ( - curKeyMappingIndex === null || - curKeyMappingIndex >= keyMappingConfigList.length - ) { - curKeyMappingIndex = 0; - localStore.set("curKeyMappingIndex", curKeyMappingIndex); - } - store.curKeyMappingIndex = curKeyMappingIndex; - - // loading maskButton from local store - let maskButton = await localStore.get<{ - show: boolean; - transparency: number; - }>("maskButton"); - if (maskButton === null) { - maskButton = { - show: true, - transparency: 0.5, - }; - await localStore.set("maskButton", maskButton); - } - store.maskButton = maskButton; }); diff --git a/src/components/Mask.vue b/src/components/Mask.vue index 041a3e9..a4280d7 100644 --- a/src/components/Mask.vue +++ b/src/components/Mask.vue @@ -10,7 +10,7 @@ import { unlistenToEvent, updateScreenSizeAndMaskArea, } from "../hotkey"; -import { KeySteeringWheel } from "../keyMappingConfig"; +import { KeyMappingConfig, KeySteeringWheel } from "../keyMappingConfig"; import { getVersion } from "@tauri-apps/api/app"; import { fetch } from "@tauri-apps/plugin-http"; import { open } from "@tauri-apps/plugin-shell"; @@ -24,6 +24,7 @@ import { AndroidKeycode, AndroidMetastate, } from "../frontcommand/android"; +import { Store } from "@tauri-apps/plugin-store"; const store = useGlobalStore(); const router = useRouter(); @@ -64,12 +65,82 @@ onActivated(async () => { } }); -onMounted(() => { +onMounted(async () => { + await loadLocalStore(); store.checkUpdate = checkUpdate; - checkUpdate(); store.showInputBox = showInputBox; + if (store.checkUpdateAtStart) checkUpdate(); }); +async function loadLocalStore() { + const localStore = new Store("store.bin"); + // loading screenSize from local store + const screenSize = await localStore.get<{ sizeW: number; sizeH: number }>( + "screenSize" + ); + if (screenSize !== null) { + store.screenSizeW = screenSize.sizeW; + store.screenSizeH = screenSize.sizeH; + } + + // loading keyMappingConfigList from local store + let keyMappingConfigList = await localStore.get( + "keyMappingConfigList" + ); + if (keyMappingConfigList === null || keyMappingConfigList.length === 0) { + // add empty key mapping config + // unable to get mask element when app is not ready + // so we use the stored mask area to get relative size + const maskArea = await localStore.get<{ + posX: number; + posY: number; + sizeW: number; + sizeH: number; + }>("maskArea"); + let relativeSize = { w: 800, h: 600 }; + if (maskArea !== null) { + relativeSize = { + w: maskArea.sizeW, + h: maskArea.sizeH, + }; + } + keyMappingConfigList = [ + { + relativeSize, + title: "空白方案", + list: [], + }, + ]; + await localStore.set("keyMappingConfigList", keyMappingConfigList); + } + store.keyMappingConfigList = keyMappingConfigList; + + // loading curKeyMappingIndex from local store + let curKeyMappingIndex = await localStore.get("curKeyMappingIndex"); + if ( + curKeyMappingIndex === null || + curKeyMappingIndex >= keyMappingConfigList.length + ) { + curKeyMappingIndex = 0; + localStore.set("curKeyMappingIndex", curKeyMappingIndex); + } + store.curKeyMappingIndex = curKeyMappingIndex; + + // loading maskButton from local store + let maskButton = await localStore.get<{ + show: boolean; + transparency: number; + }>("maskButton"); + store.maskButton = maskButton ?? { + show: true, + transparency: 0.5, + }; + + // loading checkUpdateAtStart from local store + let checkUpdateAtStart = await localStore.get("checkUpdateAtStart"); + store.checkUpdateAtStart = checkUpdateAtStart ?? true; +} + async function cleanAfterimage() { const appWindow = getCurrent(); const oldSize = await appWindow.outerSize(); diff --git a/src/components/setting/About.vue b/src/components/setting/About.vue index 430fcd7..6dd05af 100644 --- a/src/components/setting/About.vue +++ b/src/components/setting/About.vue @@ -1,12 +1,14 @@