From cc7dd7c8cac8936b1c5cf7905488d335c9df62ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9B=AE=E6=A3=83?= Date: Sat, 21 Sep 2024 19:32:14 +0800 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20=E9=87=8D=E6=9E=84?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E7=99=BB=E5=BD=95=E9=80=BB=E8=BE=91=E5=8F=8A?= =?UTF-8?q?=E5=88=87=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #126 --- package.json | 1 - pnpm-lock.yaml | 12 - src/App.vue | 70 ++-- src/components/config/tc-userBadge.vue | 369 ++++++++++-------- src/components/itembox/tib-abyss-detail.vue | 9 +- src/components/itembox/tib-abyss-overview.vue | 11 +- src/components/itembox/tib-wiki-abyss-2.vue | 31 +- src/components/itembox/tib-wiki-abyss.vue | 28 +- src/components/overlay/to-gameLogin.vue | 236 ----------- src/components/userAvatar/tua-detail-card.vue | 12 +- .../userAvatarCard/tuc-detail-card.vue | 12 +- src/pages/User/Abyss.vue | 2 +- src/pages/User/Characters.vue | 8 +- src/plugins/Sqlite/index.ts | 59 +-- src/plugins/Sqlite/modules/userAccount.ts | 235 +++++++++++ src/plugins/Sqlite/modules/userAvatar.ts | 80 +++- src/plugins/Sqlite/sql/createTable.sql | 32 +- src/plugins/Sqlite/sql/initData.ts | 22 -- src/plugins/Sqlite/sql/insertData.ts | 106 +---- src/plugins/Sqlite/utils/transUserRoles.ts | 31 -- src/store/modules/user.ts | 50 +-- src/types/App/Account.d.ts | 52 ++- src/types/BBS/Account.d.ts | 29 +- src/types/BBS/Response.d.ts | 18 +- src/types/Sqlite/Account.d.ts | 30 +- src/types/User/Account.d.ts | 75 ---- src/web/request/getGameAccounts.ts | 16 +- 27 files changed, 739 insertions(+), 897 deletions(-) delete mode 100644 src/components/overlay/to-gameLogin.vue create mode 100644 src/plugins/Sqlite/modules/userAccount.ts delete mode 100644 src/plugins/Sqlite/utils/transUserRoles.ts delete mode 100644 src/types/User/Account.d.ts diff --git a/package.json b/package.json index 93844735..4d1efe30 100644 --- a/package.json +++ b/package.json @@ -86,7 +86,6 @@ "jsencrypt": "^3.3.2", "pinia": "^2.2.2", "pinia-plugin-persistedstate": "^4.0.1", - "qrcode.vue": "^3.4.1", "uuid": "^10.0.0", "vue": "^3.5.6", "vue-echarts": "^7.0.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cd6b692e..d81547bd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -71,9 +71,6 @@ importers: pinia-plugin-persistedstate: specifier: ^4.0.1 version: 4.0.1(pinia@2.2.2(typescript@5.6.2)(vue@3.5.6(typescript@5.6.2)))(rollup@4.21.2) - qrcode.vue: - specifier: ^3.4.1 - version: 3.4.1(vue@3.5.6(typescript@5.6.2)) uuid: specifier: ^10.0.0 version: 10.0.0 @@ -2453,11 +2450,6 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - qrcode.vue@3.4.1: - resolution: {integrity: sha512-wq/zHsifH4FJ1GXQi8/wNxD1KfQkckIpjK1KPTc/qwYU5/Bkd4me0w4xZSg6EXk6xLBkVDE0zxVagewv5EMAVA==} - peerDependencies: - vue: ^3.0.0 - queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -5494,10 +5486,6 @@ snapshots: punycode@2.3.1: {} - qrcode.vue@3.4.1(vue@3.5.6(typescript@5.6.2)): - dependencies: - vue: 3.5.6(typescript@5.6.2) - queue-microtask@1.2.3: {} rc9@2.1.2: diff --git a/src/App.vue b/src/App.vue index 6ebadb28..e9065435 100644 --- a/src/App.vue +++ b/src/App.vue @@ -24,6 +24,7 @@ import TSidebar from "./components/app/t-sidebar.vue"; import showConfirm from "./components/func/confirm.js"; import showSnackbar from "./components/func/snackbar.js"; import TGSqlite from "./plugins/Sqlite/index.js"; +import TSUserAccount from "./plugins/Sqlite/modules/userAccount.js"; import { useAppStore } from "./store/modules/app.js"; import { useUserStore } from "./store/modules/user.js"; import { getBuildTime } from "./utils/TGBuild.js"; @@ -132,51 +133,40 @@ async function checkDeviceFp(): Promise { } } -// 检测 ck,info 数据 async function checkUserLoad(): Promise { - const ckDB = await TGSqlite.getCookie(); - if (JSON.stringify(ckDB) === "{}" && appStore.isLogin) { - showSnackbar({ - text: "获取 Cookie 失败!请重新登录!", - color: "error", - timeout: 3000, - }); - appStore.isLogin = false; - await TGLogger.Error("[App][checkUserLoad] 获取 Cookie 失败!"); - return; - } - if (JSON.stringify(ckDB) !== "{}" && !appStore.isLogin) appStore.isLogin = true; - const ckLocal = userStore.cookie.value; - if (JSON.stringify(ckLocal) !== JSON.stringify(ckDB)) userStore.cookie.value = ckDB; - const infoLocal = userStore.briefInfo.value; + // 检测用户数据目录 const appData = await TGSqlite.getAppData(); - const infoDB = appData.find((item) => item.key === "userInfo")?.value; - if (typeof infoDB === "undefined" && JSON.stringify(infoLocal) !== "{}") { - await TGSqlite.saveAppData("userInfo", JSON.stringify(infoLocal)); - } else if (typeof infoDB !== "undefined" && infoLocal !== JSON.parse(infoDB)) { - userStore.briefInfo.value = JSON.parse(infoDB); - console.info("briefInfo 数据已更新!"); - } - const accountLocal = userStore.account.value; - const accountDB = await TGSqlite.getCurAccount(); - if (accountDB === false) { - if (!appStore.isLogin) return; - showSnackbar({ - text: "获取 GameAccount 失败!请尝试更新数据库!", - color: "error", - timeout: 3000, - }); - await TGLogger.Error("[App][checkUserLoad] 获取 GameAccount 失败!"); - return; - } - if (accountDB !== accountLocal) userStore.account.value = accountDB; const userDir = appData.find((item) => item.key === "userDir")?.value; - if (typeof userDir === "undefined") { - await TGSqlite.saveAppData("userDir", appStore.userDir); + if (typeof userDir === "undefined") await TGSqlite.saveAppData("userDir", appStore.userDir); + else if (userDir !== appStore.userDir) appStore.userDir = userDir; + await mkdir(appStore.userDir, { recursive: true }); + // 检测用户数据 + const uidDB = await TSUserAccount.account.getAllUid(); + if (uidDB.length === 0) { + showSnackbar({ text: "未检测到可用UID,请重新登录!", color: "warn" }); return; } - if (userDir !== appStore.userDir) appStore.userDir = userDir; - await mkdir(appStore.userDir, { recursive: true }); + // 然后获取最近的UID + if (userStore.uid.value === undefined || !uidDB.includes(userStore.uid.value)) { + userStore.uid.value = uidDB[0]; + } + const curAccount = await TSUserAccount.account.getAccount(userStore.uid.value); + if (curAccount === false) { + showSnackbar({ text: `未获取到${userStore.uid.value}账号数据`, color: "error" }); + await TGLogger.Error(`[App][listenOnInit] 获取${userStore.uid.value}账号数据失败`); + await new Promise((resolve) => setTimeout(resolve, 1000)); + } else { + userStore.briefInfo.value = curAccount.brief; + userStore.cookie.value = curAccount.cookie; + } + const curGameAccount = await TSUserAccount.game.getCurAccount(userStore.uid.value); + if (curGameAccount === false) { + showSnackbar({ text: `未获取到${userStore.uid.value}游戏数据`, color: "error" }); + await TGLogger.Error(`[App][listenOnInit] 获取${userStore.uid.value}游戏数据失败`); + await new Promise((resolve) => setTimeout(resolve, 1000)); + } else { + userStore.account.value = curGameAccount; + } } async function getDeepLink(): Promise { diff --git a/src/components/config/tc-userBadge.vue b/src/components/config/tc-userBadge.vue index 2e0c951f..7dc934b9 100644 --- a/src/components/config/tc-userBadge.vue +++ b/src/components/config/tc-userBadge.vue @@ -6,6 +6,36 @@ + diff --git a/src/components/userAvatar/tua-detail-card.vue b/src/components/userAvatar/tua-detail-card.vue index c3aa5e62..fc58bbcf 100644 --- a/src/components/userAvatar/tua-detail-card.vue +++ b/src/components/userAvatar/tua-detail-card.vue @@ -109,16 +109,8 @@ watch( ); async function loadData(): Promise { - if (props.modelValue.cid === 10000005 || props.modelValue.cid === 10000007) { - bg.value = "url('/source/nameCard/profile/原神·印象.webp')"; - } else { - const card = await TSUserAvatar.getAvatarCard(props.modelValue.cid); - if (card !== false) { - bg.value = `url("/source/nameCard/profile/${card}.webp")`; - } else { - bg.value = "url('/source/nameCard/profile/原神·印象.webp')"; - } - } + const card = TSUserAvatar.getAvatarCard(props.modelValue.cid); + bg.value = `url("/source/nameCard/profile/${card}.webp")`; if (!avatar.value.startsWith("blob:")) { avatar.value = await saveImgLocal(props.modelValue.avatar.image); } diff --git a/src/components/userAvatarCard/tuc-detail-card.vue b/src/components/userAvatarCard/tuc-detail-card.vue index db239fda..e27ef38e 100644 --- a/src/components/userAvatarCard/tuc-detail-card.vue +++ b/src/components/userAvatarCard/tuc-detail-card.vue @@ -87,16 +87,8 @@ watch( ); async function loadData(): Promise { - if (props.modelValue.cid === 10000005 || props.modelValue.cid === 10000007) { - nameCard.value = "/source/nameCard/profile/原神·印象.webp"; - } else { - const card = await TSUserAvatar.getAvatarCard(props.modelValue.cid); - if (card !== false) { - nameCard.value = `/source/nameCard/profile/${card}.webp`; - } else { - nameCard.value = false; - } - } + const card = TSUserAvatar.getAvatarCard(props.modelValue.cid); + nameCard.value = `/source/nameCard/profile/${card}.webp`; } async function share(): Promise { diff --git a/src/pages/User/Abyss.vue b/src/pages/User/Abyss.vue index 63839b6c..a332c5ee 100644 --- a/src/pages/User/Abyss.vue +++ b/src/pages/User/Abyss.vue @@ -160,7 +160,7 @@ async function refreshAbyss(): Promise { return; } if (uidCur.value && uidCur.value !== user.value.gameUid) { - const confirm = showConfirm({ + const confirm = await showConfirm({ title: "确定刷新?", text: `用户UID-${user.value.gameUid}与当前深渊UID-${uidCur.value}不一致`, }); diff --git a/src/pages/User/Characters.vue b/src/pages/User/Characters.vue index b5ff7bb1..f7eac50b 100644 --- a/src/pages/User/Characters.vue +++ b/src/pages/User/Characters.vue @@ -7,7 +7,7 @@