diff --git a/src/pages/User/Abyss.vue b/src/pages/User/Abyss.vue index 8997d3ee..30d0fa62 100644 --- a/src/pages/User/Abyss.vue +++ b/src/pages/User/Abyss.vue @@ -138,6 +138,7 @@ import { getVersion } from "@tauri-apps/api/app"; import { open } from "@tauri-apps/plugin-dialog"; import { readTextFile } from "@tauri-apps/plugin-fs"; import { openUrl } from "@tauri-apps/plugin-opener"; +import { getRfAc } from "@utils/acUtils.js"; import TGLogger from "@utils/TGLogger.js"; import { generateShareImg } from "@utils/TGShare.js"; import { storeToRefs } from "pinia"; @@ -212,37 +213,14 @@ async function loadAbyss(): Promise { } async function refreshAbyss(): Promise { - let rfAccount = account.value; - let rfCk = cookie.value; - if (!uidCur.value) { - if (!rfCk) { - showSnackbar.warn("请先登录"); - await TGLogger.Warn(`[Abyss][refreshAbyss][${rfAccount.gameUid}] 未登录`); - return; - } - } else { - const gcFind = await TSUserAccount.game.getAccountByGid(uidCur.value.toString()); - console.log(uidCur.value, gcFind); - if (!gcFind) { - const check = await showDialog.check( - `确定刷新?`, - `未找到 ${uidCur.value} 对应 UID,将刷新 ${rfAccount.gameUid} 数据`, - ); - if (!check) return; - } else { - const acFind = await TSUserAccount.account.getAccount(gcFind.uid); - if (!acFind) { - const check = await showDialog.check( - `确定刷新?`, - `未找到 ${uidCur.value} 对应 CK,将刷新 ${rfAccount.gameUid} 数据`, - ); - if (!check) return; - } else { - rfAccount = gcFind; - rfCk = acFind.cookie; - } - } - } + const refreshData = await getRfAc( + uidCur.value, + account.value, + cookie.value, + "Abyss.refreshAbyss", + ); + if (!refreshData) return; + const { account: rfAccount, cookie: rfCk } = refreshData; await TGLogger.Info("[Abyss][refreshAbyss] 更新深渊数据"); await showLoading.start(`正在获取 ${rfAccount.gameUid} 的深渊数据`, "正在获取上期数据"); const resP = await recordReq.spiralAbyss(rfCk!, rfAccount, "2"); diff --git a/src/pages/User/Challenge.vue b/src/pages/User/Challenge.vue index 506aea57..b9d50659 100644 --- a/src/pages/User/Challenge.vue +++ b/src/pages/User/Challenge.vue @@ -149,13 +149,13 @@ import TucOverview from "@comp/userChallenge/tuc-overview.vue"; import TucPopItem from "@comp/userChallenge/tuc-pop-item.vue"; import gameEnum from "@enum/game.js"; import recordReq from "@req/recordReq.js"; -import TSUserAccount from "@Sqlm/userAccount.js"; import TSUserChallenge from "@Sqlm/userChallenge.js"; import useUserStore from "@store/user.js"; import { getVersion } from "@tauri-apps/api/app"; import { open } from "@tauri-apps/plugin-dialog"; import { readTextFile } from "@tauri-apps/plugin-fs"; import { openUrl } from "@tauri-apps/plugin-opener"; +import { getRfAc } from "@utils/acUtils.js"; import TGLogger from "@utils/TGLogger.js"; import { generateShareImg } from "@utils/TGShare.js"; import { storeToRefs } from "pinia"; @@ -254,37 +254,14 @@ async function loadChallenge(): Promise { } async function refreshChallenge(): Promise { - let rfAccount = account.value; - let rfCk = cookie.value; - if (!uidCur.value) { - if (!rfCk) { - showSnackbar.warn("请先登录"); - await TGLogger.Warn(`[Challenge][refreshChallenge][${rfAccount.gameUid}] 未登录`); - return; - } - } else { - const gcFind = await TSUserAccount.game.getAccountByGid(uidCur.value.toString()); - console.log(uidCur.value, gcFind); - if (!gcFind) { - const check = await showDialog.check( - `确定刷新?`, - `未找到 ${uidCur.value} 对应 UID,将刷新 ${rfAccount.gameUid} 数据`, - ); - if (!check) return; - } else { - const acFind = await TSUserAccount.account.getAccount(gcFind.uid); - if (!acFind) { - const check = await showDialog.check( - `确定刷新?`, - `未找到 ${uidCur.value} 对应 CK,将刷新 ${rfAccount.gameUid} 数据`, - ); - if (!check) return; - } else { - rfAccount = gcFind; - rfCk = acFind.cookie; - } - } - } + const refreshData = await getRfAc( + uidCur.value, + account.value, + cookie.value, + "Challenge.refreshChallenge", + ); + if (!refreshData) return; + const { account: rfAccount, cookie: rfCk } = refreshData; await TGLogger.Info("[Challenge][refreshChallenge] 开始刷新挑战数据"); await showLoading.start(`正在获取${rfAccount.gameUid}的幽境危战数据`); isRefresh.value = true; diff --git a/src/pages/User/Characters.vue b/src/pages/User/Characters.vue index 7f25c4bb..c0491762 100644 --- a/src/pages/User/Characters.vue +++ b/src/pages/User/Characters.vue @@ -163,11 +163,11 @@ import TuaSelectVals from "@comp/userAvatar/tua-select-vals.vue"; import UavSelect, { type UavSelectModel } from "@comp/userAvatar/uav-select.vue"; import TurRoleInfo from "@comp/userRecord/tur-role-info.vue"; import recordReq from "@req/recordReq.js"; -import TSUserAccount from "@Sqlm/userAccount.js"; import TSUserAvatar from "@Sqlm/userAvatar.js"; import TSUserRecord from "@Sqlm/userRecord.js"; import useUserStore from "@store/user.js"; import { getVersion } from "@tauri-apps/api/app"; +import { getRfAc } from "@utils/acUtils.js"; import TGLogger from "@utils/TGLogger.js"; import { generateShareImg } from "@utils/TGShare.js"; import { getZhElement, timestampToDate } from "@utils/toolFunc.js"; @@ -413,37 +413,9 @@ async function loadRole(): Promise { } async function refresh(): Promise { - let rfAccount = account.value; - let rfCk = cookie.value; - if (!uidCur.value) { - if (!rfCk) { - showSnackbar.warn("请先登录"); - await TGLogger.Warn(`[Character][refresh][${rfAccount.gameUid}] 未登录`); - return; - } - } else { - const gcFind = await TSUserAccount.game.getAccountByGid(uidCur.value.toString()); - console.log(uidCur.value, gcFind); - if (!gcFind) { - const check = await showDialog.check( - `确定刷新?`, - `未找到 ${uidCur.value} 对应 UID,将刷新 ${rfAccount.gameUid} 数据`, - ); - if (!check) return; - } else { - const acFind = await TSUserAccount.account.getAccount(gcFind.uid); - if (!acFind) { - const check = await showDialog.check( - `确定刷新?`, - `未找到 ${uidCur.value} 对应 CK,将刷新 ${rfAccount.gameUid} 数据`, - ); - if (!check) return; - } else { - rfAccount = gcFind; - rfCk = acFind.cookie; - } - } - } + const refreshData = await getRfAc(uidCur.value, account.value, cookie.value, "Character.refresh"); + if (!refreshData) return; + const { account: rfAccount, cookie: rfCk } = refreshData; await hideAllOverlay(); await TGLogger.Info(`[Character][refresh][${rfAccount.gameUid}] 正在更新角色数据`); await showLoading.start(`正在更新${rfAccount.gameUid}的角色数据`); diff --git a/src/pages/User/Combat.vue b/src/pages/User/Combat.vue index e5696b21..02e7041f 100644 --- a/src/pages/User/Combat.vue +++ b/src/pages/User/Combat.vue @@ -165,6 +165,7 @@ import { getVersion } from "@tauri-apps/api/app"; import { open } from "@tauri-apps/plugin-dialog"; import { readTextFile } from "@tauri-apps/plugin-fs"; import { openUrl } from "@tauri-apps/plugin-opener"; +import { getRfAc } from "@utils/acUtils.js"; import TGLogger from "@utils/TGLogger.js"; import { generateShareImg } from "@utils/TGShare.js"; import { storeToRefs } from "pinia"; @@ -265,37 +266,14 @@ async function tryLoginHutao(): Promise { } async function refreshCombat(): Promise { - let rfAccount = account.value; - let rfCk = cookie.value; - if (!uidCur.value) { - if (!rfCk) { - showSnackbar.warn("请先登录"); - await TGLogger.Warn(`[Combat][refreshCombat][${rfAccount.gameUid}] 未登录`); - return; - } - } else { - const gcFind = await TSUserAccount.game.getAccountByGid(uidCur.value.toString()); - console.log(uidCur.value, gcFind); - if (!gcFind) { - const check = await showDialog.check( - `确定刷新?`, - `未找到 ${uidCur.value} 对应 UID,将刷新 ${rfAccount.gameUid} 数据`, - ); - if (!check) return; - } else { - const acFind = await TSUserAccount.account.getAccount(gcFind.uid); - if (!acFind) { - const check = await showDialog.check( - `确定刷新?`, - `未找到 ${uidCur.value} 对应 CK,将刷新 ${rfAccount.gameUid} 数据`, - ); - if (!check) return; - } else { - rfAccount = gcFind; - rfCk = acFind.cookie; - } - } - } + const refreshData = await getRfAc( + uidCur.value, + account.value, + cookie.value, + "Combat.refreshCombat", + ); + if (!refreshData) return; + const { account: rfAccount, cookie: rfCk } = refreshData; await TGLogger.Info("[Combat][refreshCombat] 更新剧诗数据"); await showLoading.start(`正在获取${rfAccount.gameUid}的剧诗数据`); const res = await recordReq.combat.base(rfCk!, rfAccount); diff --git a/src/pages/User/Record.vue b/src/pages/User/Record.vue index 04a0fad3..243b9c02 100644 --- a/src/pages/User/Record.vue +++ b/src/pages/User/Record.vue @@ -81,10 +81,10 @@ import TurOverviewGrid from "@comp/userRecord/tur-overview-grid.vue"; import TurRoleInfo from "@comp/userRecord/tur-role-info.vue"; import TurWorldGrid from "@comp/userRecord/tur-world-grid.vue"; import recordReq from "@req/recordReq.js"; -import TSUserAccount from "@Sqlm/userAccount.js"; import TSUserRecord from "@Sqlm/userRecord.js"; import useUserStore from "@store/user.js"; import { getVersion } from "@tauri-apps/api/app"; +import { getRfAc } from "@utils/acUtils.js"; import TGLogger from "@utils/TGLogger.js"; import { generateShareImg } from "@utils/TGShare.js"; import { storeToRefs } from "pinia"; @@ -135,37 +135,14 @@ async function loadRecord(): Promise { } async function refreshRecord(): Promise { - let rfAccount = account.value; - let rfCk = cookie.value; - if (!uidCur.value) { - if (!rfCk) { - showSnackbar.warn("请先登录"); - await TGLogger.Warn(`[UserRecord][refresh][${rfAccount.gameUid}] 未登录`); - return; - } - } else { - const gcFind = await TSUserAccount.game.getAccountByGid(uidCur.value.toString()); - console.log(uidCur.value, gcFind); - if (!gcFind) { - const check = await showDialog.check( - `确定刷新?`, - `未找到 ${uidCur.value} 对应 UID,将刷新 ${rfAccount.gameUid} 数据`, - ); - if (!check) return; - } else { - const acFind = await TSUserAccount.account.getAccount(gcFind.uid); - if (!acFind) { - const check = await showDialog.check( - `确定刷新?`, - `未找到 ${uidCur.value} 对应 CK,将刷新 ${rfAccount.gameUid} 数据`, - ); - if (!check) return; - } else { - rfAccount = gcFind; - rfCk = acFind.cookie; - } - } - } + const refreshData = await getRfAc( + uidCur.value?.toString(), + account.value, + cookie.value, + "UserRecord.refresh", + ); + if (!refreshData) return; + const { account: rfAccount, cookie: rfCk } = refreshData; await showLoading.start(`正在刷新${rfAccount.gameUid}的战绩数据`); await TGLogger.Info(`[UserRecord][refresh][${rfAccount.gameUid}] 刷新战绩数据`); isRefresh.value = true; diff --git a/src/types/App/Account.d.ts b/src/types/App/Account.d.ts index fe63c3dd..1b1bd724 100644 --- a/src/types/App/Account.d.ts +++ b/src/types/App/Account.d.ts @@ -1,6 +1,6 @@ /** * App 账号相关类型定义文件 - * @since Beta v0.6.0 + * @since Beta v0.9.9 */ declare namespace TGApp.App.Account { @@ -54,4 +54,15 @@ declare namespace TGApp.App.Account { /** STUid */ stuid: string; }; + + /** + * 获取当前刷新账号返回 + * @since Beta v0.9.9 + */ + type RfAc = { + /** 账号 */ + account: TGApp.Sqlite.Account.Game; + /** Cookie */ + cookie: Cookie; + }; } diff --git a/src/utils/acUtils.ts b/src/utils/acUtils.ts new file mode 100644 index 00000000..83ba3407 --- /dev/null +++ b/src/utils/acUtils.ts @@ -0,0 +1,60 @@ +/** + * 账号相关辅助函数 + * @since Beta v0.9.9 + */ + +import showDialog from "@comp/func/dialog.js"; +import showSnackbar from "@comp/func/snackbar.js"; +import TSUserAccount from "@Sqlm/userAccount.js"; + +import TGLogger from "./TGLogger.js"; + +/** + * 获取刷新用的账号和Cookie + * @since Beta v0.9.9 + * @param uid - 当前选择的UID + * @param dAc - 默认账号 + * @param dCk - 默认Cookie + * @param lp - 日志前缀(用于区分不同页面) + * @returns 验证后的账号和Cookie,如果验证失败返回null + */ +export async function getRfAc( + uid: string | undefined, + dAc: TGApp.Sqlite.Account.Game, + dCk: TGApp.App.Account.Cookie | undefined, + lp: string, +): Promise { + let rfAc = dAc; + let rfCk = dCk; + + if (!uid) { + if (!rfCk) { + showSnackbar.warn("请先登录"); + await TGLogger.Warn(`[${lp}] 未登录`); + return null; + } + } else { + const gcFind = await TSUserAccount.game.getAccountByGid(uid.toString()); + if (!gcFind) { + const check = await showDialog.check( + `确定刷新?`, + `未找到 ${uid} 对应 UID,将刷新 ${rfAc.gameUid} 数据`, + ); + if (!check) return null; + } else { + const acFind = await TSUserAccount.account.getAccount(gcFind.uid); + if (!acFind) { + const check = await showDialog.check( + `确定刷新?`, + `未找到 ${uid} 对应 CK,将刷新 ${rfAc.gameUid} 数据`, + ); + if (!check) return null; + } else { + rfAc = gcFind; + rfCk = acFind.cookie; + } + } + } + if (rfAc && rfCk) return { account: rfAc, cookie: rfCk }; + return null; +}