mirror of
https://github.com/BTMuli/TeyvatGuide.git
synced 2026-03-28 05:59:46 +08:00
♻️ 重构刷新逻辑,提取获取账号和Cookie的辅助函数
This commit is contained in:
@@ -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<void> {
|
||||
}
|
||||
|
||||
async function refreshAbyss(): Promise<void> {
|
||||
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");
|
||||
|
||||
@@ -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<void> {
|
||||
}
|
||||
|
||||
async function refreshChallenge(): Promise<void> {
|
||||
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;
|
||||
|
||||
@@ -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<void> {
|
||||
}
|
||||
|
||||
async function refresh(): Promise<void> {
|
||||
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}的角色数据`);
|
||||
|
||||
@@ -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<void> {
|
||||
}
|
||||
|
||||
async function refreshCombat(): Promise<void> {
|
||||
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);
|
||||
|
||||
@@ -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<void> {
|
||||
}
|
||||
|
||||
async function refreshRecord(): Promise<void> {
|
||||
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;
|
||||
|
||||
13
src/types/App/Account.d.ts
vendored
13
src/types/App/Account.d.ts
vendored
@@ -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;
|
||||
};
|
||||
}
|
||||
|
||||
60
src/utils/acUtils.ts
Normal file
60
src/utils/acUtils.ts
Normal file
@@ -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<TGApp.App.Account.RfAc | null> {
|
||||
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;
|
||||
}
|
||||
Reference in New Issue
Block a user