♻️ 迁移剩余请求

This commit is contained in:
BTMuli
2026-04-15 19:34:47 +08:00
parent f370953d43
commit 7679f6de37
23 changed files with 601 additions and 415 deletions

View File

@@ -461,7 +461,7 @@ async function tryGetTokens(ck: TGApp.App.Account.Cookie): Promise<void> {
try {
const briefRes = await bbsReq.userInfo(ck);
console.debug(briefRes);
if ("retcode" in briefRes) {
if (briefRes.retcode !== 0) {
await showLoading.end();
showSnackbar.error(`[${briefRes.retcode}]${briefRes.message}`);
await TGLogger.Warn(`获取用户数据失败:${briefRes.retcode}-${briefRes.message}`);
@@ -470,10 +470,10 @@ async function tryGetTokens(ck: TGApp.App.Account.Cookie): Promise<void> {
}
showSnackbar.success("获取用户信息成功");
briefInfoGet = {
nickname: briefRes.nickname,
uid: briefRes.uid,
avatar: briefRes.avatar_url,
desc: briefRes.introduce,
nickname: briefRes.data.user_info.nickname,
uid: briefRes.data.user_info.uid,
avatar: briefRes.data.user_info.avatar_url,
desc: briefRes.data.user_info.introduce,
};
await showLoading.update("正在保存用户数据");
await TSUserAccount.account.saveAccount({
@@ -764,7 +764,7 @@ async function addByCookie(): Promise<void> {
let briefInfoGet: TGApp.App.Account.BriefInfo | undefined;
try {
const briefRes = await bbsReq.userInfo(ck);
if ("retcode" in briefRes) {
if (briefRes.retcode !== 0) {
await showLoading.end();
showSnackbar.error(`[${briefRes.retcode}]${briefRes.message}`);
await TGLogger.Warn(`获取用户数据失败:${briefRes.retcode}-${briefRes.message}`);
@@ -772,10 +772,10 @@ async function addByCookie(): Promise<void> {
return;
}
briefInfoGet = {
nickname: briefRes.nickname,
uid: briefRes.uid,
avatar: briefRes.avatar_url,
desc: briefRes.introduce,
nickname: briefRes.data.user_info.nickname,
uid: briefRes.data.user_info.uid,
avatar: briefRes.data.user_info.avatar_url,
desc: briefRes.data.user_info.introduce,
};
} catch (e) {
const errMsg = TGHttps.getErrMsg(e);

View File

@@ -29,6 +29,7 @@
<script lang="ts" setup>
import showSnackbar from "@comp/func/snackbar.js";
import bbsReq from "@req/bbsReq.js";
import TGHttps from "@utils/TGHttps.js";
import { onMounted, onUnmounted, ref, shallowRef, useTemplateRef, watch } from "vue";
import { LoadingParams } from "./loading.js";
@@ -79,16 +80,30 @@ async function getRandomEmoji(): Promise<void> {
for (const [k, v] of Object.entries(JSON.parse(emojisRead))) tmpArr.push([`${k}`, `${v}`]);
localEmojis.value = tmpArr;
} else {
const resp = await bbsReq.emojis();
if ("retcode" in resp) {
console.error(resp);
showSnackbar.error("获取表情包失败!");
let resp: TGApp.BBS.Emoji.Resp | undefined;
try {
resp = await bbsReq.emojis();
if (resp.retcode !== 0) {
console.error(resp);
showSnackbar.error("获取表情包失败!");
iconUrl.value = defaultIcon;
return;
}
} catch (e) {
console.error(e);
showSnackbar.error(`获取表情包失败:${TGHttps.getErrMsg(e)}`);
iconUrl.value = defaultIcon;
return;
}
localStorage.setItem("emojis", JSON.stringify(resp));
const emojis: Record<string, string> = {};
for (const series of resp.data.list) {
for (const emoji of series.list) {
emojis[emoji.name] = emoji.icon;
}
}
localStorage.setItem("emojis", JSON.stringify(emojis));
let tmpArr: Array<EmojiItem> = [];
for (const [k, v] of Object.entries(resp)) {
for (const [k, v] of Object.entries(emojis)) {
tmpArr.push([k, v]);
localEmojis.value = tmpArr;
}

View File

@@ -193,7 +193,7 @@ async function tryGetTokens(ck: TGApp.App.Account.Cookie): Promise<void> {
await showLoading.update("正在获取用户信息");
try {
const briefRes = await bbsReq.userInfo(ck);
if ("retcode" in briefRes) {
if (briefRes.retcode !== 0) {
await showLoading.end();
showSnackbar.error(`[${briefRes.retcode}]${briefRes.message}`);
await TGLogger.Warn(`获取用户数据失败:${briefRes.retcode}-${briefRes.message}`);
@@ -201,10 +201,10 @@ async function tryGetTokens(ck: TGApp.App.Account.Cookie): Promise<void> {
}
showSnackbar.success("获取用户信息成功");
briefInfoGet = {
nickname: briefRes.nickname,
uid: briefRes.uid,
avatar: briefRes.avatar_url,
desc: briefRes.introduce,
nickname: briefRes.data.user_info.nickname,
uid: briefRes.data.user_info.uid,
avatar: briefRes.data.user_info.avatar_url,
desc: briefRes.data.user_info.introduce,
};
await showLoading.update("正在保存用户数据");
await TSUserAccount.account.saveAccount({
@@ -371,7 +371,7 @@ async function refreshUser(uid: string, full: boolean) {
await showLoading.update("正在获取用户信息");
try {
const infoRes = await bbsReq.userInfo(ck);
if ("retcode" in infoRes) {
if (infoRes.retcode !== 0) {
await showLoading.update("获取用户信息失败");
showSnackbar.error(`[${infoRes.retcode}]${infoRes.message}`);
await TGLogger.Warn("[tc-userBadge][refreshUserInfo] 获取用户信息失败");
@@ -379,10 +379,10 @@ async function refreshUser(uid: string, full: boolean) {
} else {
await showLoading.update("获取用户信息成功");
account.brief = {
nickname: infoRes.nickname,
uid: infoRes.uid,
avatar: infoRes.avatar_url,
desc: infoRes.introduce,
nickname: infoRes.data.user_info.nickname,
uid: infoRes.data.user_info.uid,
avatar: infoRes.data.user_info.avatar_url,
desc: infoRes.data.user_info.introduce,
};
await TGLogger.Info("[tc-userBadge][refreshUserInfo] 获取用户信息成功");
}
@@ -630,17 +630,17 @@ async function addByCookie(): Promise<void> {
let briefGet: TGApp.App.Account.BriefInfo | undefined;
try {
const briefRes = await bbsReq.userInfo(ck);
if ("retcode" in briefRes) {
if (briefRes.retcode !== 0) {
await showLoading.end();
showSnackbar.error(`[${briefRes.retcode}]${briefRes.message}`);
await TGLogger.Warn(`获取用户数据失败:${briefRes.retcode}-${briefRes.message}`);
return;
}
briefGet = {
nickname: briefRes.nickname,
uid: briefRes.uid,
avatar: briefRes.avatar_url,
desc: briefRes.introduce,
nickname: briefRes.data.user_info.nickname,
uid: briefRes.data.user_info.uid,
avatar: briefRes.data.user_info.avatar_url,
desc: briefRes.data.user_info.introduce,
};
} catch (e) {
const errMsg = TGHttps.getErrMsg(e);

View File

@@ -118,39 +118,57 @@ async function share(): Promise<void> {
}
async function freshQr(): Promise<void> {
const resp = await hk4eReq.loginQr.create(codeGid.value);
if ("retcode" in resp) {
showSnackbar.error(`[${resp.retcode}] ${resp.message}`);
let resp: TGApp.Game.Login.QrResp | undefined;
try {
resp = await hk4eReq.loginQr.create(codeGid.value);
if (resp.retcode !== 0) {
showSnackbar.error(`[${resp.retcode}] ${resp.message}`);
return;
}
} catch (e) {
const errMsg = TGHttps.getErrMsg(e);
showSnackbar.error(`创建二维码失败:${errMsg}`);
await TGLogger.Error(`[TcoGameLogin][freshQr] 创建二维码异常`);
await TGLogger.Error(`[TcoGameLogin][freshQr] ${e}`);
return;
}
codeUrl.value = resp.url;
codeUrl.value = resp.data.url;
codeTicket.value = new URL(codeUrl.value).searchParams.get("ticket") || "";
}
async function cycleGetDataGame(): Promise<void> {
const res = await hk4eReq.loginQr.state(codeTicket.value, codeGid.value);
console.log(res);
if ("retcode" in res) {
showSnackbar.error(`[${res.retcode}] ${res.message}`);
if (res.retcode === -106) {
await freshQr();
} else {
if (cycleTimer) clearInterval(cycleTimer);
cycleTimer = null;
model.value = false;
let res: TGApp.Game.Login.StatResp | undefined;
try {
res = await hk4eReq.loginQr.state(codeTicket.value, codeGid.value);
console.log(res);
if (res.retcode !== 0) {
showSnackbar.error(`[${res.retcode}] ${res.message}`);
if (res.retcode === -106) {
await freshQr();
} else {
if (cycleTimer) clearInterval(cycleTimer);
cycleTimer = null;
model.value = false;
}
return;
}
} catch (e) {
const errMsg = TGHttps.getErrMsg(e);
showSnackbar.error(`获取登录状态失败:${errMsg}`);
await TGLogger.Error(`[TcoGameLogin][cycleGetDataGame] 获取登录状态异常`);
await TGLogger.Error(`[TcoGameLogin][cycleGetDataGame] ${e}`);
return;
}
if (res.stat === "Init" || res.stat === "Scanned") return;
if (res.stat === "Confirmed") {
if (res.data.stat === "Init" || res.data.stat === "Scanned") return;
if (res.data.stat === "Confirmed") {
if (cycleTimer) clearInterval(cycleTimer);
cycleTimer = null;
if (res.payload.proto === "Raw") {
showSnackbar.error(`返回数据异常:${res.payload}`);
if (res.data.payload.proto === "Raw") {
showSnackbar.error(`返回数据异常:${res.data.payload}`);
model.value = false;
return;
}
const statusRaw: TGApp.Game.Login.StatPayloadRaw = JSON.parse(res.payload.raw);
const statusRaw: TGApp.Game.Login.StatPayloadRaw = JSON.parse(res.data.payload.raw);
await showLoading.start("正在获取SToken");
let stResp: TGApp.Game.Login.StResp | undefined;
try {

View File

@@ -13,7 +13,7 @@
<div v-else-if="gameAccounts.length === 0" class="sign-not-login">暂无游戏账户</div>
<div v-else-if="loading" class="sign-loading">
<div class="loading-content">
<v-progress-linear color="blue" :model-value="loadingProgress" height="6" rounded />
<v-progress-linear :model-value="loadingProgress" color="blue" height="6" rounded />
<div class="loading-text">{{ loadingText }}</div>
</div>
</div>
@@ -36,6 +36,7 @@ import lunaReq from "@req/lunaReq.js";
import TSUserAccount from "@Sqlm/userAccount.js";
import useAppStore from "@store/app.js";
import useUserStore from "@store/user.js";
import TGHttps from "@utils/TGHttps.js";
import TGLogger from "@utils/TGLogger.js";
import { storeToRefs } from "pinia";
import { onMounted, ref, watch } from "vue";
@@ -72,6 +73,15 @@ watch(
onMounted(async () => await loadData());
async function endLoad(): Promise<void> {
loadingProgress.value = 100;
loadingText.value = "加载完成";
await new Promise<void>((resolve) => setTimeout(resolve, 200));
loading.value = false;
loadingProgress.value = 0;
loadingText.value = "";
}
async function loadData(): Promise<void> {
if (!isLogin.value || uid.value === undefined || !cookie.value) {
gameAccounts.value = [];
@@ -79,51 +89,50 @@ async function loadData(): Promise<void> {
return;
}
signAccounts.value = [];
try {
const accounts = await TSUserAccount.game.getAccount(uid.value);
gameAccounts.value = accounts;
if (accounts.length === 0) {
await TGLogger.Warn("[Sign Card] No game accounts found");
emits("success");
return;
}
const accounts = await TSUserAccount.game.getAccount(uid.value);
gameAccounts.value = accounts;
if (accounts.length === 0) {
await TGLogger.Warn("[Sign Card] No game accounts found");
emits("success");
loading.value = true;
loadingProgress.value = 0;
const ck = { cookie_token: cookie.value.cookie_token, account_id: cookie.value.account_id };
for (let i = 0; i < accounts.length; i++) {
const account = accounts[i];
loadingText.value = `正在加载 ${account.gameBiz} - ${account.regionName} - ${account.gameUid}...`;
loadingProgress.value = (i / accounts.length) * 100;
let info, stat;
try {
const infoResp = await lunaReq.sign.info(account, ck);
if ("retcode" in infoResp) {
await TGLogger.Error(
`[Sign Card] Failed to get rewards for ${account.gameBiz}: ${infoResp.message}`,
);
} else info = infoResp;
const statResp = await lunaReq.sign.stat(account, ck);
if ("retcode" in statResp) {
await TGLogger.Error(
`[Sign Card] Failed to get status for ${account.gameBiz}: ${statResp.message}`,
);
} else stat = statResp;
} catch (error) {
await TGLogger.Error(`[Sign Card] Error loading data for ${account.gameBiz}: ${error}`);
}
signAccounts.value.push({ account, info, stat });
}
} catch (error) {
await TGLogger.Error(`[Sign Card] Error loading data: ${error}`);
} finally {
loadingProgress.value = 100;
loadingText.value = "加载完成";
await new Promise<void>((resolve) => setTimeout(resolve, 200));
loading.value = false;
loadingProgress.value = 0;
loadingText.value = "";
await endLoad();
return;
}
emits("success");
loading.value = true;
loadingProgress.value = 0;
const ck = { cookie_token: cookie.value.cookie_token, account_id: cookie.value.account_id };
for (let i = 0; i < accounts.length; i++) {
const account = accounts[i];
loadingText.value = `正在加载 ${account.gameBiz} - ${account.regionName} - ${account.gameUid}...`;
loadingProgress.value = (i / accounts.length) * 100;
let info, stat;
let infoResp: TGApp.BBS.Sign.HomeResp | undefined;
try {
infoResp = await lunaReq.sign.info(account, ck);
if (infoResp.retcode !== 0) {
await TGLogger.Warn(
`[Sign Card] Failed to get rewards for ${account.gameBiz}: [${infoResp.retcode}] ${infoResp.message}`,
);
} else info = infoResp.data;
} catch (error) {
const errMsg = TGHttps.getErrMsg(error);
await TGLogger.Error(`[Sign Card] Error loading info for ${account.gameBiz}: ${errMsg}`);
}
let statResp: TGApp.BBS.Sign.InfoResp | undefined;
try {
statResp = await lunaReq.sign.stat(account, ck);
if (statResp.retcode !== 0) {
await TGLogger.Warn(
`[Sign Card] Failed to get status for ${account.gameBiz}: [${statResp.retcode}] ${statResp.message}`,
);
} else stat = statResp.data;
} catch (error) {
const errMsg = TGHttps.getErrMsg(error);
await TGLogger.Error(`[Sign Card] Error loading stat for ${account.gameBiz}: ${errMsg}`);
}
signAccounts.value.push({ account, info, stat });
}
await endLoad();
}
async function handleUserSwitch(newUid: string): Promise<void> {

View File

@@ -108,6 +108,7 @@ import lunaReq from "@req/lunaReq.js";
import miscReq from "@req/miscReq.js";
import useBBSStore from "@store/bbs.js";
import useUserStore from "@store/user.js";
import TGHttps from "@utils/TGHttps.js";
import TGLogger from "@utils/TGLogger.js";
import { generateShareImg } from "@utils/TGShare.js";
import { storeToRefs } from "pinia";
@@ -323,70 +324,74 @@ async function handleSign(): Promise<void> {
return;
}
isSign.value = true;
try {
const ck = { cookie_token: cookie.value.cookie_token, account_id: cookie.value.account_id };
const ckSign = {
stoken: cookie.value.stoken,
stuid: cookie.value.stuid,
mid: cookie.value.mid,
};
const ck = { cookie_token: cookie.value.cookie_token, account_id: cookie.value.account_id };
const ckSign = {
stoken: cookie.value.stoken,
stuid: cookie.value.stuid,
mid: cookie.value.mid,
};
let check = false;
let challenge: string | undefined = undefined;
let check = false;
let challenge: string | undefined = undefined;
while (!check) {
const signResp = await lunaReq.sign.oper(props.account, ck, challenge);
if (challenge !== undefined) challenge = undefined;
if ("retcode" in signResp) {
if (signResp.retcode === 1034) {
await TGLogger.Info("[Sign Item] Captcha required");
const challengeGet = await miscReq.challenge(ckSign);
if (challengeGet === false) {
showSnackbar.error("验证码验证失败");
break;
}
challenge = challengeGet;
continue;
}
await TGLogger.Error(`[Sign Item] Sign-in failed: ${signResp.message}`);
showSnackbar.error(`签到失败: ${signResp.message}`);
break;
}
if (signResp.success === 0) {
check = true;
} else if (signResp.is_risk) {
await TGLogger.Info("[Sign Item] Risk verification required");
const gtRes = await showGeetest({
gt: signResp.gt,
challenge: signResp.challenge,
new_captcha: 1,
success: 1,
});
if (gtRes === false) {
while (!check) {
let signResp: TGApp.BBS.Sign.SignResp | undefined;
try {
signResp = await lunaReq.sign.oper(props.account, ck, challenge);
} catch (e) {
const errMsg = TGHttps.getErrMsg(e);
await TGLogger.Error(`[Sign Item] Sign-in error: ${errMsg}`);
showSnackbar.error(`签到失败: ${errMsg}`);
isSign.value = false;
break;
}
if (challenge !== undefined) challenge = undefined;
if (signResp.retcode !== 0) {
if (signResp.retcode === 1034) {
await TGLogger.Info("[Sign Item] Captcha required");
const challengeGet = await miscReq.challenge(ckSign);
if (challengeGet === false) {
showSnackbar.error("验证码验证失败");
isSign.value = false;
break;
}
challenge = signResp.challenge;
} else {
challenge = challengeGet;
continue;
}
await TGLogger.Error(`[Sign Item] Sign-in failed: ${signResp.message}`);
showSnackbar.error(`签到失败: ${signResp.message}`);
isSign.value = false;
break;
}
if (signResp.data.success === 0) {
check = true;
} else if (signResp.data.is_risk) {
await TGLogger.Info("[Sign Item] Risk verification required");
const gtRes = await showGeetest({
gt: signResp.data.gt,
challenge: signResp.data.challenge,
new_captcha: 1,
success: 1,
});
if (gtRes === false) {
showSnackbar.error("验证码验证失败");
break;
}
challenge = signResp.data.challenge;
} else {
break;
}
if (check) {
showSnackbar.success("签到成功");
updateLocalDataAfterSign();
// Load resign info only if there are missed days
const missedDays = signStat.value?.sign_cnt_missed ?? 0;
if (missedDays > 0) {
await loadResignInfo();
}
}
} catch (error) {
await TGLogger.Error(`[Sign Item] Sign-in error: ${error}`);
showSnackbar.error("签到失败,请重试");
} finally {
isSign.value = false;
}
if (check) {
showSnackbar.success("签到成功");
updateLocalDataAfterSign();
// Load resign info only if there are missed days
const missedDays = signStat.value?.sign_cnt_missed ?? 0;
if (missedDays > 0) {
await loadResignInfo();
}
}
isSign.value = false;
}
async function handleResign(): Promise<void> {
@@ -443,30 +448,38 @@ async function handleResign(): Promise<void> {
let challenge: string | undefined = undefined;
while (!check) {
const resignResp = await lunaReq.resign.oper(props.account, ck, challenge);
if (challenge !== undefined) challenge = undefined;
if ("retcode" in resignResp) {
if (resignResp.retcode === 1034) {
await TGLogger.Info("[Sign Item] Captcha required for resign");
const challengeGet = await miscReq.challenge(ckSign);
if (challengeGet === false) {
showSnackbar.error("验证码验证失败");
break;
let resignResp: TGApp.BBS.Sign.ResignResp | undefined;
try {
resignResp = await lunaReq.resign.oper(props.account, ck, challenge);
if (challenge !== undefined) challenge = undefined;
if (resignResp.retcode !== 0) {
if (resignResp.retcode === 1034) {
await TGLogger.Info("[Sign Item] Captcha required for resign");
const challengeGet = await miscReq.challenge(ckSign);
if (challengeGet === false) {
showSnackbar.error("验证码验证失败");
break;
}
challenge = challengeGet;
continue;
}
challenge = challengeGet;
continue;
await TGLogger.Error(`[Sign Item] Resign failed: ${resignResp.message}`);
showSnackbar.error(`补签失败: ${resignResp.message}`);
break;
}
await TGLogger.Error(`[Sign Item] Resign failed: ${resignResp.message}`);
showSnackbar.error(`补签失败: ${resignResp.message}`);
// Resign successful
check = true;
updateLocalDataAfterResign();
showSnackbar.success(
`补签成功,剩余补签次数${resignCnt - 1}次,剩余米游币${coinCnt - coinCost}`,
);
} catch (e) {
const errMsg = TGHttps.getErrMsg(e);
await TGLogger.Error(`[Sign Item] Resign error: ${errMsg}`);
showSnackbar.error(`补签失败: ${errMsg}`);
break;
}
// Resign successful
check = true;
updateLocalDataAfterResign();
showSnackbar.success(
`补签成功,剩余补签次数${resignCnt - 1}次,剩余米游币${coinCnt - coinCost}`,
);
}
} catch (error) {
await TGLogger.Error(`[Sign Item] Resign error: ${error}`);

View File

@@ -241,21 +241,35 @@ async function refreshState(ck: TGApp.App.Account.Cookie, uid: string): Promise<
`[签到任务]刷新${item.info.title}-${item.account.regionName}-${item.account.gameUid}`,
);
if (item.reward === undefined) {
const rewardResp = await lunaReq.sign.info(item.account, cookie);
console.log("签到奖励", item, rewardResp);
if ("retcode" in rewardResp) {
await TGLogger.Script(
`[签到任务]获取签到奖励失败:${rewardResp.retcode} ${rewardResp.message}`,
);
showSnackbar.error(`[${rewardResp.retcode}] ${rewardResp.message}`);
} else item.reward = rewardResp.awards[dayNow - 1];
let rewardResp: TGApp.BBS.Sign.HomeResp | undefined;
try {
rewardResp = await lunaReq.sign.info(item.account, cookie);
console.log("签到奖励", item, rewardResp);
if (rewardResp.retcode !== 0) {
await TGLogger.Script(
`[签到任务]获取签到奖励失败:${rewardResp.retcode} ${rewardResp.message}`,
);
showSnackbar.error(`[${rewardResp.retcode}] ${rewardResp.message}`);
} else item.reward = rewardResp.data.awards[dayNow - 1];
} catch (e) {
const errMsg = TGHttps.getErrMsg(e);
await TGLogger.Script(`[签到任务]获取签到奖励异常:${errMsg}`);
showSnackbar.error(`获取签到奖励失败:${errMsg}`);
}
}
let statResp: TGApp.BBS.Sign.InfoResp | undefined;
try {
statResp = await lunaReq.sign.stat(item.account, cookie);
console.log("签到状态", item, statResp);
if (statResp.retcode !== 0) {
await TGLogger.Script(`[签到任务]获取签到状态失败:${statResp.retcode} ${statResp.message}`);
showSnackbar.error(`[${statResp.retcode}] ${statResp.message}`);
} else item.stat = statResp.data;
} catch (e) {
const errMsg = TGHttps.getErrMsg(e);
await TGLogger.Script(`[签到任务]获取签到状态异常:${errMsg}`);
showSnackbar.error(`获取签到状态失败:${errMsg}`);
}
const statResp = await lunaReq.sign.stat(item.account, cookie);
console.log("签到状态", item, statResp);
if ("retcode" in statResp) {
await TGLogger.Script(`[签到任务]获取签到状态失败:${statResp.retcode} ${statResp.message}`);
showSnackbar.error(`[${statResp.retcode}] ${statResp.message}`);
} else item.stat = statResp;
}
}
@@ -276,16 +290,18 @@ async function trySign(
let check = false;
let challenge: string | undefined = undefined;
while (!check) {
const signResp = await lunaReq.sign.oper(item.account, cookie, challenge);
console.log("签到信息", item, signResp);
if (challenge !== undefined) challenge = undefined;
if (typeof signResp !== "object") {
await TGLogger.Script(
`[签到任务]${item.info.title}-${item.account.regionName}-${item.account.gameUid} ${signResp}`,
);
let signResp: TGApp.BBS.Sign.SignResp | undefined;
try {
signResp = await lunaReq.sign.oper(item.account, cookie, challenge);
} catch (e) {
const errMsg = TGHttps.getErrMsg(e);
await TGLogger.Script(`[签到任务]签到异常:${errMsg}`);
showSnackbar.error(`签到失败:${errMsg}`);
break;
}
if ("retcode" in signResp) {
console.log("签到信息", item, signResp);
if (challenge !== undefined) challenge = undefined;
if (signResp.retcode !== 0) {
if (signResp.retcode === 1034) {
if (skip) {
await TGLogger.Script("已设置跳过验证,打卡失败");
@@ -308,12 +324,12 @@ async function trySign(
showSnackbar.error(`[${signResp.retcode}] ${signResp.message}`);
break;
}
if (signResp.success === 0) check = true;
else if (signResp.is_risk) {
if (signResp.data.success === 0) check = true;
else if (signResp.data.is_risk) {
await TGLogger.Script("[签到任务]触发风险验证,开始验证");
const gtRes = await showGeetest({
gt: signResp.gt,
challenge: signResp.challenge,
gt: signResp.data.gt,
challenge: signResp.data.challenge,
new_captcha: 1,
success: 1,
});
@@ -321,7 +337,7 @@ async function trySign(
await TGLogger.Script("[签到任务]验证码验证失败");
break;
}
challenge = signResp.challenge;
challenge = signResp.data.challenge;
} else break;
}
if (check) {

View File

@@ -35,6 +35,8 @@ import { isColorSimilar } from "@utils/colorFunc.js";
import { parseLink, parsePost } from "@utils/linkParser.js";
import { decodeRegExp } from "@utils/toolFunc.js";
import { onMounted, ref, shallowRef, StyleValue, toRaw, useTemplateRef } from "vue";
import TGHttps from "@utils/TGHttps.js";
import TGLogger from "@utils/TGLogger.js";
export type TpText = {
insert: string;
@@ -139,14 +141,26 @@ async function copyLink(): Promise<void> {
function getEmojiUrl(): string {
if (localEmojis.value === null || !JSON.parse(localEmojis.value)[getEmojiName()]) {
console.warn("tpEmoji unknown", getEmojiName());
bbsReq.emojis().then((res) => {
if ("retcode" in res) {
console.error(res);
return "";
}
localEmojis.value = JSON.stringify(res);
localStorage.setItem("emojis", localEmojis.value);
});
bbsReq
.emojis()
.then((res) => {
if (res.retcode !== 0) {
console.error(res);
return "";
}
const emojis: Record<string, string> = {};
for (const series of res.data.list) {
for (const emoji of series.list) {
emojis[emoji.name] = emoji.icon;
}
}
localEmojis.value = JSON.stringify(emojis);
localStorage.setItem("emojis", localEmojis.value);
})
.catch(async (e) => {
const errMsg = TGHttps.getErrMsg(e);
await TGLogger.Error(errMsg);
});
}
if (localEmojis.value === null) return "";
const emojiName = getEmojiName();

View File

@@ -15,8 +15,8 @@
:key="index"
:class="{ selected: index === props.collection.cur - 1 }"
:post
@onUserClick="toUserProfile"
class="tpoc-item"
@onUserClick="toUserProfile"
/>
</div>
</div>
@@ -57,12 +57,23 @@ watch(
onMounted(async () => await Promise.all([refreshInfo(), refreshPosts()]));
async function refreshInfo(): Promise<void> {
const infoResp = await bbsReq.collection(props.collection.collection_id, props.gid);
if ("retcode" in infoResp) {
// showSnackbar.warn(`[合集信息][${infoResp.retcode}] ${infoResp.message}`);
let infoResp: TGApp.BBS.Collection.InfoResp | undefined;
try {
infoResp = await bbsReq.collection(props.collection.collection_id, props.gid);
if (infoResp.retcode !== 0) {
// showSnackbar.warn(`[合集信息][${infoResp.retcode}] ${infoResp.message}`);
await TGLogger.Warn(
`[vp-overlay-collection] 获取合集信息失败:[${infoResp.retcode}] ${infoResp.message}`,
);
return;
}
} catch (e) {
const errMsg = TGHttps.getErrMsg(e);
showSnackbar.error(`获取合集信息失败:${errMsg}`);
await TGLogger.Error(`[vp-overlay-collection] 获取合集信息异常:${errMsg}`);
return;
}
info.value = infoResp;
info.value = infoResp.data;
console.log(info.value);
}

View File

@@ -30,11 +30,11 @@
<div class="vp-ou-divider" />
<div ref="listRef" class="vp-ou-list">
<TPostCard
@onUserClick="toUserProfile()"
v-for="post in results"
:key="post.post.post_id"
:post
class="vp-ou-item"
@onUserClick="toUserProfile()"
/>
</div>
</div>
@@ -108,12 +108,21 @@ watch(
);
async function loadUser(): Promise<void> {
const resp = await bbsReq.otherUserInfo(props.gid.toString(), props.uid);
if ("retcode" in resp) {
showSnackbar.warn(`[${resp.retcode}] ${resp.message}`);
let resp: TGApp.BBS.User.InfoResp | undefined;
try {
resp = await bbsReq.otherUserInfo(props.gid.toString(), props.uid);
if (resp.retcode !== 0) {
showSnackbar.warn(`[${resp.retcode}] ${resp.message}`);
await TGLogger.Warn(`[vp-overlay-user] 获取用户信息失败:[${resp.retcode}] ${resp.message}`);
return;
}
} catch (e) {
const errMsg = TGHttps.getErrMsg(e);
showSnackbar.error(`获取用户信息失败:${errMsg}`);
await TGLogger.Error(`[vp-overlay-user] 获取用户信息异常:${errMsg}`);
return;
}
userInfo.value = resp;
userInfo.value = resp.data.user_info;
}
async function toUserProfile(): Promise<void> {