diff --git a/src/App.vue b/src/App.vue index c589ce6f..f6bb8d51 100644 --- a/src/App.vue +++ b/src/App.vue @@ -31,12 +31,13 @@ import { openUrl } from "@tauri-apps/plugin-opener"; import { getBuildTime } from "@utils/TGBuild.js"; import TGLogger from "@utils/TGLogger.js"; import { getWindowSize, resizeWindow } from "@utils/TGWindow.js"; +import { isRunInAdmin } from "@utils/toolFunc.js"; import { storeToRefs } from "pinia"; -import { computed, onMounted, onUnmounted, ref } from "vue"; +import { computed, nextTick, onMounted, onUnmounted, ref } from "vue"; import { useRouter } from "vue-router"; const router = useRouter(); -const { theme, needResize, deviceInfo, isLogin, userDir, buildTime, closeToTray } = +const { theme, needResize, deviceInfo, isLogin, userDir, buildTime, closeToTray, isInAdmin } = storeToRefs(useAppStore()); const { uid, briefInfo, account, cookie } = storeToRefs(useUserStore()); @@ -61,6 +62,8 @@ onMounted(async () => { dpListener = await event.listen("active_deep_link", handleDpListen); yaeListener = await event.listen("yae_read", handleYaeListen); closeListener = await event.listen("main-window-close-requested", handleWindowClose); + await nextTick(); + if (isInAdmin.value) await win.setTitle(`${title} - AdminMode`); } if (needResize.value !== "false") await resizeWindow(); document.documentElement.className = theme.value; @@ -225,6 +228,7 @@ async function handleResizeListen(event: Event): Promise { async function listenOnInit(): Promise { console.info("[App][listenOnInit] 监听初始化事件!"); await event.listen("initApp", async () => { + await checkIsAdmin(); await checkAppLoad(); await checkDeviceFp(); try { @@ -238,6 +242,10 @@ async function listenOnInit(): Promise { }); } +async function checkIsAdmin(): Promise { + isInAdmin.value = await isRunInAdmin(); +} + async function checkAppLoad(): Promise { let checkDB = false; try { diff --git a/src/components/app/t-sidebar.vue b/src/components/app/t-sidebar.vue index 8f892a86..c26c93ba 100644 --- a/src/components/app/t-sidebar.vue +++ b/src/components/app/t-sidebar.vue @@ -303,7 +303,7 @@ import { computed, onMounted, onUnmounted, ref } from "vue"; import ToSwitchAc from "./to-switchAc.vue"; -const { sidebar, theme, isLogin, recentNewsType, gameDir } = storeToRefs(useAppStore()); +const { sidebar, theme, isLogin, recentNewsType, gameDir, isInAdmin } = storeToRefs(useAppStore()); const { uid, briefInfo, cookie, account } = storeToRefs(useUserStore()); let themeListener: UnlistenFn | null = null; // @ts-expect-error The import.meta meta-property is not allowed in files which will build into CommonJS output. @@ -669,14 +669,6 @@ async function tryLaunchGame(): Promise { showSnackbar.warn("未检测到原神本体应用!"); return; } - let isAdmin = false; - try { - isAdmin = await invoke("is_in_admin"); - } catch (err) { - showSnackbar.error(`检测管理员权限失败:${err}`); - await TGLogger.Error(`[pageAchi][toYae]检测管理员权限失败:${err}`); - return; - } const resp = await passportReq.authTicket(account.value, cookie.value); if (typeof resp !== "string") { showSnackbar.error(`[${resp.retcode}] ${resp.message}`); @@ -686,7 +678,7 @@ async function tryLaunchGame(): Promise { await TGLogger.Error(`[sidebar][tryLaunchGame] resp: ${JSON.stringify(resp)}`); return; } - if (!isAdmin) { + if (!isInAdmin.value) { showSnackbar.success(`成功获取ticket:${resp},正在启动应用...`); const cmd = Command.create("exec-sh", [`&"${gamePath}" login_auth_ticket=${resp}`], { cwd: gameDir.value, diff --git a/src/pages/common/PageAchi.vue b/src/pages/common/PageAchi.vue index a01fd1f4..3979d7cb 100644 --- a/src/pages/common/PageAchi.vue +++ b/src/pages/common/PageAchi.vue @@ -31,18 +31,18 @@