diff --git a/src-tauri/capabilities/TeyvatGuide.json b/src-tauri/capabilities/TeyvatGuide.json index 81854c0a..f7eae732 100644 --- a/src-tauri/capabilities/TeyvatGuide.json +++ b/src-tauri/capabilities/TeyvatGuide.json @@ -52,7 +52,8 @@ { "url": "https://*.miyoushe.com/*" }, { "url": "https://*.mihoyo.com/*" }, { "url": "https://homa.snapgenshin.com/*" }, - { "url": "https://*.hoyoverse.com/*" } + { "url": "https://*.hoyoverse.com/*" }, + { "url": "https://api.hakush.in/*" } ] }, { diff --git a/src/pages/User/Gacha.vue b/src/pages/User/Gacha.vue index 9d460fc9..a3413fd7 100644 --- a/src/pages/User/Gacha.vue +++ b/src/pages/User/Gacha.vue @@ -3,42 +3,43 @@ - + 祈愿记录 - + 增量刷新 - + 全量刷新 - 导入 - + 导入 + 导入(v4) - 导出 - + 导出 + 导出(v4) - 删除 + 删除 + 检测数据 @@ -49,22 +50,22 @@ 数据表格 过往祈愿 - 祈愿详情 + 祈愿详情 - + - - + + - + - + - + @@ -88,6 +89,7 @@ import TSUserGacha from "@Sqlm/userGacha.js"; import useUserStore from "@store/user.js"; import { path } from "@tauri-apps/api"; import { open, save } from "@tauri-apps/plugin-dialog"; +import Hakushi from "@utils/Hakushi.js"; import TGLogger from "@utils/TGLogger.js"; import { exportUigfData, readUigfData, verifyUigfData } from "@utils/UIGF.js"; import { storeToRefs } from "pinia"; @@ -108,9 +110,12 @@ const ovShow = ref(false); const ovMode = ref<"export" | "import">("import"); const selectItem = shallowRef>([]); const gachaListCur = shallowRef>([]); +const hakushiData = shallowRef>([]); onMounted(async () => { - await showLoading.start("正在加载祈愿数据", "正在获取祈愿 UID 列表"); + await showLoading.start("正在加载祈愿数据", "正在获取Hakushi元数据"); + hakushiData.value = await Hakushi.fetch(); + await showLoading.update("正在获取祈愿 UID 列表"); await TGLogger.Info("[UserGacha][onMounted] 进入角色祈愿页面"); selectItem.value = await TSUserGacha.getUidList(); if (selectItem.value.length === 0) { @@ -259,6 +264,16 @@ async function refreshGachaPool( const find = AppWeaponData.find((weapon) => weapon.name === item.name); if (find) tempItem.item_id = find.id.toString(); } + if (tempItem.item_id === "") { + const find = hakushiData.value.find( + (i) => i.type === item.item_type && i.name === item.name, + ); + if (find) tempItem.item_id = find.id.toString(); + else { + showSnackbar.warn(`无法搜索到 ${item.item_type} ${item.name} 的ID,请等待元数据更新`); + continue; + } + } uigfList.push(tempItem); if (force) { if (!gachaDataMap) gachaDataMap = {}; @@ -388,6 +403,11 @@ async function deleteGacha(): Promise { await new Promise((resolve) => setTimeout(resolve, 1500)); window.location.reload(); } + +async function checkData(): Promise { + // TODO: 读取当前UID数据并补充itemId + showSnackbar.warn("尚未实现"); +}