mirror of
https://github.com/BTMuli/TeyvatGuide.git
synced 2026-03-26 05:39:45 +08:00
♻️ 方法提取
This commit is contained in:
12
src/App.vue
12
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<string>("active_deep_link", handleDpListen);
|
||||
yaeListener = await event.listen<TGApp.Plugins.Yae.RsEvent>("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<string>): Promise<void> {
|
||||
async function listenOnInit(): Promise<void> {
|
||||
console.info("[App][listenOnInit] 监听初始化事件!");
|
||||
await event.listen<void>("initApp", async () => {
|
||||
await checkIsAdmin();
|
||||
await checkAppLoad();
|
||||
await checkDeviceFp();
|
||||
try {
|
||||
@@ -238,6 +242,10 @@ async function listenOnInit(): Promise<void> {
|
||||
});
|
||||
}
|
||||
|
||||
async function checkIsAdmin(): Promise<void> {
|
||||
isInAdmin.value = await isRunInAdmin();
|
||||
}
|
||||
|
||||
async function checkAppLoad(): Promise<void> {
|
||||
let checkDB = false;
|
||||
try {
|
||||
|
||||
@@ -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<void> {
|
||||
showSnackbar.warn("未检测到原神本体应用!");
|
||||
return;
|
||||
}
|
||||
let isAdmin = false;
|
||||
try {
|
||||
isAdmin = await invoke<boolean>("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<void> {
|
||||
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,
|
||||
|
||||
@@ -31,18 +31,18 @@
|
||||
</template>
|
||||
<template #extension>
|
||||
<div class="top-extension">
|
||||
<v-btn class="top-btn" prepend-icon="mdi-import" variant="elevated" @click="importJson()"
|
||||
>导入</v-btn
|
||||
>
|
||||
<v-btn class="top-btn" prepend-icon="mdi-export" variantelevated @click="exportJson()"
|
||||
>导出</v-btn
|
||||
>
|
||||
<v-btn class="top-btn" prepend-icon="mdi-plus" variant="elevated" @click="createUid()"
|
||||
>新建存档</v-btn
|
||||
>
|
||||
<v-btn class="top-btn" prepend-icon="mdi-delete" variant="elevated" @click="deleteUid()"
|
||||
>删除存档</v-btn
|
||||
>
|
||||
<v-btn class="top-btn" prepend-icon="mdi-import" variant="elevated" @click="importJson()">
|
||||
导入
|
||||
</v-btn>
|
||||
<v-btn class="top-btn" prepend-icon="mdi-export" variantelevated @click="exportJson()">
|
||||
导出
|
||||
</v-btn>
|
||||
<v-btn class="top-btn" prepend-icon="mdi-plus" variant="elevated" @click="createUid()">
|
||||
新建存档
|
||||
</v-btn>
|
||||
<v-btn class="top-btn" prepend-icon="mdi-delete" variant="elevated" @click="deleteUid()">
|
||||
删除存档
|
||||
</v-btn>
|
||||
<div class="top-switch" @click="switchHideFin">
|
||||
<v-icon v-if="hideFin" color="var(--tgc-od-green)">
|
||||
mdi-checkbox-marked-circle-outline
|
||||
@@ -114,7 +114,7 @@ const seriesList = AppAchievementSeriesData.sort((a, b) => a.order - b.order).ma
|
||||
|
||||
const route = useRoute();
|
||||
const router = useRouter();
|
||||
const { gameDir } = storeToRefs(useAppStore());
|
||||
const { gameDir, isInAdmin } = storeToRefs(useAppStore());
|
||||
|
||||
let achiListener: UnlistenFn | null = null;
|
||||
|
||||
@@ -318,16 +318,7 @@ async function toYae(): Promise<void> {
|
||||
showSnackbar.warn("未检测到原神本体应用!");
|
||||
return;
|
||||
}
|
||||
// 判断是否是管理员权限
|
||||
let isAdmin = false;
|
||||
try {
|
||||
isAdmin = await invoke<boolean>("is_in_admin");
|
||||
} catch (err) {
|
||||
showSnackbar.error(`检测管理员权限失败:${err}`);
|
||||
await TGLogger.Error(`[pageAchi][toYae]检测管理员权限失败:${err}`);
|
||||
return;
|
||||
}
|
||||
if (!isAdmin) {
|
||||
if (!isInAdmin.value) {
|
||||
const check = await showDialog.check("是否以管理员模式重启?", "该功能需要管理员权限才能使用");
|
||||
if (!check) {
|
||||
showSnackbar.cancel("已取消以管理员模式重启");
|
||||
|
||||
@@ -130,7 +130,7 @@ export type MaterialInfo = {
|
||||
info: TGApp.App.Material.WikiItem;
|
||||
};
|
||||
|
||||
const { gameDir } = storeToRefs(useAppStore());
|
||||
const { gameDir, isInAdmin } = storeToRefs(useAppStore());
|
||||
|
||||
const curUid = ref<number>(0);
|
||||
const selectType = ref<string | null>(null);
|
||||
@@ -271,16 +271,7 @@ async function tryCallYae(): Promise<void> {
|
||||
showSnackbar.warn("未检测到原神本体应用!");
|
||||
return;
|
||||
}
|
||||
// 判断是否是管理员权限
|
||||
let isAdmin = false;
|
||||
try {
|
||||
isAdmin = await invoke<boolean>("is_in_admin");
|
||||
} catch (err) {
|
||||
showSnackbar.error(`检测管理员权限失败:${err}`);
|
||||
await TGLogger.Error(`[pageAchi][toYae]检测管理员权限失败:${err}`);
|
||||
return;
|
||||
}
|
||||
if (!isAdmin) {
|
||||
if (!isInAdmin.value) {
|
||||
const check = await showDialog.check("是否以管理员模式重启?", "该功能需要管理员权限才能使用");
|
||||
if (!check) {
|
||||
showSnackbar.cancel("已取消以管理员模式重启");
|
||||
|
||||
@@ -65,6 +65,8 @@ const useAppStore = defineStore(
|
||||
const cancelLike = ref<boolean>(true);
|
||||
/* 关闭窗口时最小化到托盘 */
|
||||
const closeToTray = ref<boolean>(false);
|
||||
/** 是否是管理员模式 */
|
||||
const isInAdmin = ref<boolean>(false);
|
||||
|
||||
/**
|
||||
* 初始化应用状态
|
||||
@@ -147,6 +149,7 @@ const useAppStore = defineStore(
|
||||
init,
|
||||
changeTheme,
|
||||
getImageUrl,
|
||||
isInAdmin,
|
||||
};
|
||||
},
|
||||
{
|
||||
|
||||
@@ -3,9 +3,12 @@
|
||||
* @since Beta v0.9.0
|
||||
*/
|
||||
|
||||
import showSnackbar from "@comp/func/snackbar.js";
|
||||
import { AvatarExtResTypeEnum, AvatarExtTypeEnum } from "@enum/bbs.js";
|
||||
import { path } from "@tauri-apps/api";
|
||||
import { invoke } from "@tauri-apps/api/core";
|
||||
import { type } from "@tauri-apps/plugin-os";
|
||||
import TGLogger from "@utils/TGLogger.js";
|
||||
import { v4 } from "uuid";
|
||||
|
||||
import { AppCharacterData, AppWeaponData } from "@/data/index.js";
|
||||
@@ -318,3 +321,19 @@ export function getUserAvatar(
|
||||
// TODO: 处理其他类型头像
|
||||
return user.avatar_url;
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断是否是管理员模式
|
||||
* @since Beta v0.9.1
|
||||
*/
|
||||
export async function isRunInAdmin(): Promise<boolean> {
|
||||
let isAdmin = false;
|
||||
try {
|
||||
isAdmin = await invoke<boolean>("is_in_admin");
|
||||
} catch (err) {
|
||||
showSnackbar.error(`检测管理员权限失败:${err}`);
|
||||
await TGLogger.Error(`[pageAchi][toYae]检测管理员权限失败:${err}`);
|
||||
return false;
|
||||
}
|
||||
return isAdmin;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user