mirror of
https://github.com/BTMuli/TeyvatGuide.git
synced 2026-04-23 22:09:51 +08:00
♻️ 简化错误处理,迁移painterReq
This commit is contained in:
@@ -74,10 +74,7 @@ async function loadNav(): Promise<void> {
|
||||
nav.value = resp.data.data.navigator;
|
||||
if (loadCode.value) loadCode.value = false;
|
||||
} catch (e) {
|
||||
let errMsg = String(e);
|
||||
if (TGHttps.isHttpErr(e)) {
|
||||
errMsg = e.status ? `[${e.status}] ${e.statusText}` : e.message;
|
||||
}
|
||||
const errMsg = TGHttps.getErrMsg(e);
|
||||
showSnackbar.error(`加载组件数据失败: ${errMsg}`);
|
||||
await TGLogger.Error(`[TGameNav][loadNav] 加载组件数据失败:${e}`);
|
||||
}
|
||||
@@ -113,10 +110,7 @@ async function tryGetCode(): Promise<void> {
|
||||
loadCode.value = false;
|
||||
} catch (e) {
|
||||
loadCode.value = false;
|
||||
let errMsg = String(e);
|
||||
if (TGHttps.isHttpErr(e)) {
|
||||
errMsg = e.status ? `[${e.status}] ${e.statusText}` : e.message;
|
||||
}
|
||||
const errMsg = TGHttps.getErrMsg(e);
|
||||
showSnackbar.error(`获取兑换码失败: ${errMsg}`);
|
||||
await TGLogger.Error(`[TGameNav][tryGetCode] 获取兑换码失败:${e}`);
|
||||
}
|
||||
|
||||
@@ -104,10 +104,7 @@ async function loadImageBuffer(): Promise<void> {
|
||||
try {
|
||||
buffer.value = await TGHttps.buffer(imageUrl);
|
||||
} catch (e) {
|
||||
let errMsg = String(e);
|
||||
if (TGHttps.isHttpErr(e)) {
|
||||
errMsg = e.status ? `[${e.status}] ${e.statusText}` : e.message;
|
||||
}
|
||||
const errMsg = TGHttps.getErrMsg(e);
|
||||
showSnackbar.error(`获取图像Buffer失败:${errMsg}`);
|
||||
await TGLogger.Error(`[PaoBirthCard][loadImageBuffer] 获取图像Buffer失败:${imageUrl}`);
|
||||
await TGLogger.Error(`[PaoBirthCard][loadImageBuffer] ${e}`);
|
||||
|
||||
@@ -53,6 +53,7 @@ import TGNotify from "@utils/TGNotify.js";
|
||||
import { postDetailRateLimiter } from "@utils/rateLimiter.js";
|
||||
import { storeToRefs } from "pinia";
|
||||
import { ref, shallowRef, watch } from "vue";
|
||||
import TGHttps from "@utils/TGHttps.js";
|
||||
|
||||
/** 用于渲染的任务项 */
|
||||
type ParseMission = {
|
||||
@@ -197,15 +198,38 @@ async function tryAuto(skip: boolean = false): Promise<void> {
|
||||
if (likeFind) likeCnt = likeFind.process;
|
||||
const viewFind = postFilter.find((i) => i.key === "view_post_0");
|
||||
if (viewFind) viewCnt = viewFind.process;
|
||||
// 获取帖子列表
|
||||
await TGLogger.Script("[米游币任务]获取帖子列表");
|
||||
const listResp = await painterReq.forum.recent(26, 2, 2, undefined, 20);
|
||||
let listResp: TGApp.BBS.Forum.PostForumResp | undefined;
|
||||
try {
|
||||
listResp = await painterReq.forum.recent(26, 2, 2, undefined, 20);
|
||||
if (listResp.retcode !== 0) {
|
||||
showSnackbar.error(`[${listResp.retcode}] ${listResp.message}`);
|
||||
await TGLogger.Script(`获取帖子列表失败: [${listResp.retcode}] ${listResp.message}`, "warn");
|
||||
await TGLogger.ScriptSep("米游币任务", false);
|
||||
loadScript.value = false;
|
||||
loadMission.value = false;
|
||||
return;
|
||||
}
|
||||
} catch (e) {
|
||||
const errMsg = TGHttps.getErrMsg(e);
|
||||
showSnackbar.error(`获取帖子列表失败:${errMsg}`);
|
||||
await TGLogger.Script(`获取帖子列表失败`, "error");
|
||||
await TGLogger.Error(`[tus-mission][tryAuto] ${e}`);
|
||||
await TGLogger.ScriptSep("米游币任务", false);
|
||||
loadScript.value = false;
|
||||
loadMission.value = false;
|
||||
return;
|
||||
}
|
||||
if (!listResp) return;
|
||||
// 执行操作
|
||||
const ckShare = {
|
||||
stoken: props.acCur.cookie.stoken,
|
||||
stuid: props.acCur.cookie.stuid,
|
||||
mid: props.acCur.cookie.mid,
|
||||
};
|
||||
const ckPost = { ltoken: props.acCur.cookie.ltoken, ltuid: props.acCur.cookie.ltuid };
|
||||
for (const post of listResp.list) {
|
||||
for (const post of listResp.data.list) {
|
||||
if (!isShare) {
|
||||
await TGLogger.Script(`[米游币任务]正在分享帖子${post.post.post_id}`);
|
||||
const shareResp = await apiHubReq.post.share(post.post.post_id, ckShare);
|
||||
@@ -320,7 +344,6 @@ async function autoSign(ck: TGApp.App.Account.Cookie, skip: boolean, ch?: string
|
||||
}
|
||||
await TGLogger.Script("[米游币任务]正在执行打卡");
|
||||
const ckSign = { stoken: ck.stoken, stuid: ck.stuid, mid: ck.mid };
|
||||
await painterReq.forum.recent(26, 2, 1, undefined, 20, ckSign);
|
||||
const resp = await apiHubReq.sign(ckSign, 2, ch);
|
||||
console.log("打卡情况", resp);
|
||||
if (resp.retcode !== 0) {
|
||||
|
||||
@@ -61,10 +61,7 @@ onMounted(async () => {
|
||||
const viewResp = await Bili.video.view(aid, bvid);
|
||||
videoData.value = viewResp.data;
|
||||
} catch (e) {
|
||||
let errMsg = String(e);
|
||||
if (TGHttps.isHttpErr(e)) {
|
||||
errMsg = e.status ? `[${e.status}] ${e.statusText}` : e.message;
|
||||
}
|
||||
const errMsg = TGHttps.getErrMsg(e);
|
||||
showSnackbar.error(`获取视频信息失败: ${errMsg}`);
|
||||
await TGLogger.Error(`[TpVideo][onMounted] 获取视频信息异常: ${url}`);
|
||||
await TGLogger.Error(`[TpVideo][onMounted] ${e}`);
|
||||
|
||||
@@ -161,10 +161,7 @@ async function loadCoverBuffer(): Promise<void> {
|
||||
try {
|
||||
coverBuffer.value = await TGHttps.buffer(props.data.insert.vod.cover);
|
||||
} catch (e) {
|
||||
let errMsg = String(e);
|
||||
if (TGHttps.isHttpErr(e)) {
|
||||
errMsg = e.status ? `[${e.status}] ${e.statusText}` : e.message;
|
||||
}
|
||||
const errMsg = TGHttps.getErrMsg(e);
|
||||
showSnackbar.error(`获取图像Buffer失败:${errMsg}`);
|
||||
await TGLogger.Error(
|
||||
`[TpVod][loadCoverBuffer] 获取图像Buffer失败:${props.data.insert.vod.cover}`,
|
||||
|
||||
@@ -33,6 +33,8 @@ import useUserStore from "@store/user.js";
|
||||
import { openUrl } from "@tauri-apps/plugin-opener";
|
||||
import { storeToRefs } from "pinia";
|
||||
import { ref, shallowRef, useTemplateRef, watch } from "vue";
|
||||
import TGHttps from "@utils/TGHttps.js";
|
||||
import TGLogger from "@utils/TGLogger.js";
|
||||
|
||||
const { cookie } = storeToRefs(useUserStore());
|
||||
|
||||
@@ -73,18 +75,34 @@ async function loadMore(refresh: boolean = false): Promise<void> {
|
||||
return;
|
||||
}
|
||||
loading.value = true;
|
||||
const resp = await painterReq.follow(cookie.value, offset.value);
|
||||
if ("retcode" in resp) {
|
||||
showSnackbar.warn(`[${resp.retcode}] ${resp.message}`);
|
||||
// 获取关注帖子列表
|
||||
let resp: TGApp.BBS.Post.FollowPostResp | undefined;
|
||||
try {
|
||||
resp = await painterReq.follow(cookie.value, offset.value);
|
||||
if (resp.retcode !== 0) {
|
||||
showSnackbar.warn(`[${resp.retcode}] ${resp.message}`);
|
||||
await TGLogger.Warn(`[VpOverlayFollow][loadMore] [${resp.retcode}] ${resp.message}`);
|
||||
loading.value = false;
|
||||
return;
|
||||
}
|
||||
} catch (e) {
|
||||
const errMsg = TGHttps.getErrMsg(e);
|
||||
showSnackbar.error(`获取关注帖子失败,${errMsg}`);
|
||||
await TGLogger.Error(`[VpOverlayFollow][loadMore] 获取关注帖子失败`);
|
||||
await TGLogger.Error(`[VpOverlayFollow][loadMore] ${e}`);
|
||||
loading.value = false;
|
||||
return;
|
||||
}
|
||||
offset.value = resp.next_offset;
|
||||
isLast.value = resp.is_last;
|
||||
if (refresh) posts.value = resp.list;
|
||||
else posts.value = posts.value.concat(resp.list);
|
||||
if (!resp) {
|
||||
loading.value = false;
|
||||
return;
|
||||
}
|
||||
offset.value = resp.data.next_offset;
|
||||
isLast.value = resp.data.is_last;
|
||||
if (refresh) posts.value = resp.data.list;
|
||||
else posts.value = posts.value.concat(resp.data.list);
|
||||
loading.value = false;
|
||||
showSnackbar.success(`成功加载${resp.list.length}条数据`);
|
||||
showSnackbar.success(`成功加载${resp.data.list.length}条数据`);
|
||||
if (refresh && listEl.value) {
|
||||
listEl.value.scrollTo({ top: 0, behavior: "smooth" });
|
||||
}
|
||||
|
||||
@@ -404,10 +404,7 @@ async function loadImageBuffer(): Promise<void> {
|
||||
try {
|
||||
buffer.value = await TGHttps.buffer(oriLink.value);
|
||||
} catch (e) {
|
||||
let errMsg = String(e);
|
||||
if (TGHttps.isHttpErr(e)) {
|
||||
errMsg = e.status ? `[${e.status}] ${e.statusText}` : e.message;
|
||||
}
|
||||
const errMsg = TGHttps.getErrMsg(e);
|
||||
showSnackbar.error(`获取图像Buffer失败:${errMsg}`);
|
||||
await TGLogger.Error(`[VpOverlayImage][loadImageBuffer] 获取图像Buffer失败:${oriLink.value}`);
|
||||
await TGLogger.Error(`[VpOverlayImage][loadImageBuffer] ${e}`);
|
||||
|
||||
@@ -1,21 +1,21 @@
|
||||
<template>
|
||||
<TOverlay v-model="visible">
|
||||
<div class="tpol-box" v-if="card">
|
||||
<div v-if="card" class="tpol-box">
|
||||
<div class="tpol-title">
|
||||
<span>抽奖详情</span>
|
||||
<span>{{ timeStatus }}</span>
|
||||
</div>
|
||||
<div class="tpol-info">
|
||||
<TpAvatar @click="toUserProfile(card.creator.uid)" :data="card.creator" position="left" />
|
||||
<TpAvatar :data="card.creator" position="left" @click="toUserProfile(card.creator.uid)" />
|
||||
<div>参与方式:{{ upWay }}</div>
|
||||
<div>奖品详情:</div>
|
||||
<div v-for="reward in card.rewards" :key="reward.name" class="tpol-info-reward">
|
||||
<v-icon size="12" color="var(--tgc-pink-1)">mdi-gift</v-icon>
|
||||
<v-icon color="var(--tgc-pink-1)" size="12">mdi-gift</v-icon>
|
||||
<span>{{ reward.name }}</span>
|
||||
<span>{{ reward.goal }}份</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="tpol-title" v-if="timeStatus === '已开奖'">中奖详情</div>
|
||||
<div v-if="timeStatus === '已开奖'" class="tpol-title">中奖详情</div>
|
||||
<template v-if="timeStatus === '已开奖'">
|
||||
<template v-for="reward in card.rewards" :key="reward.name">
|
||||
<div class="vpol-reward-title">{{ reward.name }} {{ reward.win }}/{{ reward.goal }}</div>
|
||||
@@ -24,8 +24,8 @@
|
||||
v-for="user in reward.users"
|
||||
:key="user.uid"
|
||||
:data="user"
|
||||
position="left"
|
||||
class="tpolr-user"
|
||||
position="left"
|
||||
@click="onUserClick(user)"
|
||||
/>
|
||||
</div>
|
||||
@@ -35,7 +35,7 @@
|
||||
</div>
|
||||
</TOverlay>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
<script lang="ts" setup>
|
||||
import TOverlay from "@comp/app/t-overlay.vue";
|
||||
import showSnackbar from "@comp/func/snackbar.js";
|
||||
import TpAvatar from "@comp/viewPost/tp-avatar.vue";
|
||||
@@ -45,6 +45,8 @@ import { openUrl } from "@tauri-apps/plugin-opener";
|
||||
import { generateShareImg } from "@utils/TGShare.js";
|
||||
import { stamp2LastTime } from "@utils/toolFunc.js";
|
||||
import { onUnmounted, ref, shallowRef, watch } from "vue";
|
||||
import TGHttps from "@utils/TGHttps.js";
|
||||
import TGLogger from "@utils/TGLogger.js";
|
||||
|
||||
type TpoLotteryProps = { lottery: string | undefined };
|
||||
type RenderCard = {
|
||||
@@ -81,13 +83,25 @@ watch(
|
||||
async function load(): Promise<void> {
|
||||
if (!props.lottery) return;
|
||||
if (card.value) return;
|
||||
const resp = await painterReq.lottery(props.lottery);
|
||||
if ("retcode" in resp) {
|
||||
showSnackbar.error(`[${resp.retcode}] ${resp.message}`);
|
||||
let resp: TGApp.BBS.Lottery.Resp | undefined;
|
||||
try {
|
||||
resp = await painterReq.lottery(props.lottery);
|
||||
if (resp.retcode !== 0) {
|
||||
showSnackbar.error(`[${resp.retcode}] ${resp.message}`);
|
||||
await TGLogger.Warn(`[VpOverlayLottery][load] 获取抽奖数据异常`);
|
||||
await TGLogger.Warn(`[VpOverlayLottery][load] [${resp.retcode}] ${resp.message}`);
|
||||
return;
|
||||
}
|
||||
} catch (e) {
|
||||
const errMsg = TGHttps.getErrMsg(e);
|
||||
showSnackbar.error(`获取抽奖数据异常: ${errMsg}`);
|
||||
await TGLogger.Error(`[VpOverlayLottery][load] 获取抽奖数据异常`);
|
||||
await TGLogger.Error(`[VpOverlayLottery][load] ${e}`);
|
||||
return;
|
||||
}
|
||||
jsonData.value = resp;
|
||||
if (resp.status === "Settled") timeStatus.value = "已开奖";
|
||||
if (!resp) return;
|
||||
jsonData.value = resp.data.show_lottery;
|
||||
if (resp.data.show_lottery.status === "Settled") timeStatus.value = "已开奖";
|
||||
else {
|
||||
if (timer !== undefined) {
|
||||
clearInterval(timer);
|
||||
@@ -95,7 +109,7 @@ async function load(): Promise<void> {
|
||||
}
|
||||
timer = setInterval(flushTimeStatus, 1000);
|
||||
}
|
||||
card.value = transLotteryCard(resp);
|
||||
card.value = transLotteryCard(resp.data.show_lottery);
|
||||
upWay.value = getUpWay(card.value?.upWay);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user