diff --git a/src/components/userScripts/tus-mission.vue b/src/components/userScripts/tus-mission.vue index ec76bf99..b7a32088 100644 --- a/src/components/userScripts/tus-mission.vue +++ b/src/components/userScripts/tus-mission.vue @@ -48,7 +48,6 @@ import miscReq from "@req/miscReq.js"; import painterReq from "@req/painterReq.js"; import postReq from "@req/postReq.js"; import useAppStore from "@store/app.js"; -import useUserStore from "@store/user.js"; import TGLogger from "@utils/TGLogger.js"; import TGNotify from "@utils/TGNotify.js"; import { storeToRefs } from "pinia"; @@ -73,11 +72,16 @@ type ParseMission = { /** 完成次数 */ cycleTimes?: number; }; +/** 任务组件参数 */ +type TusMissionProps = { + /** 米社账号 */ + acCur: TGApp.App.Account.User | undefined; +}; -const { cookie, uid } = storeToRefs(useUserStore()); const { cancelLike } = storeToRefs(useAppStore()); const loadScript = defineModel(); +const props = defineProps(); const todayPoints = ref(0); const totalPoints = ref(0); @@ -90,7 +94,7 @@ const missionList = shallowRef>([]); defineExpose({ tryAuto }); watch( - () => uid.value, + () => props.acCur, () => { todayPoints.value = 0; totalPoints.value = 0; @@ -136,6 +140,10 @@ function mergeMission( } async function tryRefresh(): Promise { + if (!props.acCur) { + showSnackbar.warn("未检测到当前账号数据"); + return; + } if (loadScript.value) { showSnackbar.warn("任务正在执行中,请稍后再试"); return; @@ -144,19 +152,17 @@ async function tryRefresh(): Promise { loadState.value = true; await TGLogger.ScriptSep("米游币任务"); await TGLogger.Script("[米游币任务]刷新任务状态"); - if (!cookie.value) { - await TGLogger.Script("[米游币任务]未检测到Cookie"); - showSnackbar.warn("当前账号未登录,请先登录"); - await TGLogger.ScriptSep("米游币任务", false); - return; - } - await refreshState(cookie.value); + await refreshState(props.acCur.cookie); await TGLogger.ScriptSep("米游币任务", false); loadScript.value = false; loadState.value = false; } async function tryAuto(skip: boolean = false): Promise { + if (!props.acCur) { + showSnackbar.warn("未检测到当前账号数据"); + return; + } if (loadScript.value) { showSnackbar.warn("任务正在执行中,请稍后再试"); return; @@ -165,20 +171,14 @@ async function tryAuto(skip: boolean = false): Promise { loadMission.value = true; await TGLogger.ScriptSep("米游币任务"); await TGLogger.Script("[米游币任务]开始执行任务"); - if (!cookie.value) { - await TGLogger.Script("[米游币任务]未检测到Cookie"); - showSnackbar.warn("当前账号未登录,请先登录"); - await TGLogger.ScriptSep("米游币任务", false); - return; - } - await refreshState(cookie.value); + await refreshState(props.acCur.cookie); if (parseMissions.value.length === 0 || missionList.value.length === 0) { await TGLogger.ScriptSep("米游币任务", false); loadScript.value = false; loadMission.value = false; return; } - await autoSign(cookie.value, skip); + await autoSign(props.acCur.cookie, skip); const postFilter = parseMissions.value.filter((i) => i.key !== "continuous_sign"); if (postFilter.every((i) => i.status)) { await TGLogger.Script("[米游币任务]所有任务已完成"); @@ -198,8 +198,12 @@ async function tryAuto(skip: boolean = false): Promise { if (viewFind) viewCnt = viewFind.process; await TGLogger.Script("[米游币任务]获取帖子列表"); const listResp = await painterReq.forum.recent(26, 2, 2, undefined, 20); - const ckShare = { stoken: cookie.value.stoken, stuid: cookie.value.stuid, mid: cookie.value.mid }; - const ckPost = { ltoken: cookie.value.ltoken, ltuid: cookie.value.ltuid }; + 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) { if (!isShare) { await TGLogger.Script(`[米游币任务]正在分享帖子${post.post.post_id}`); @@ -256,7 +260,7 @@ async function tryAuto(skip: boolean = false): Promise { } } await TGLogger.Script("[米游币任务]任务执行完毕,即将刷新任务状态"); - await refreshState(cookie.value); + await refreshState(props.acCur.cookie); await TGLogger.ScriptSep("米游币任务", false); loadScript.value = false; loadMission.value = false; diff --git a/src/components/userScripts/tus-sign.vue b/src/components/userScripts/tus-sign.vue index 56fda85c..ba8d0fe4 100644 --- a/src/components/userScripts/tus-sign.vue +++ b/src/components/userScripts/tus-sign.vue @@ -62,7 +62,6 @@ import miscReq from "@req/miscReq.js"; import takumiReq from "@req/takumiReq.js"; import TSUserAccount from "@Sqlm/userAccount.js"; import useBBSStore from "@store/bbs.js"; -import useUserStore from "@store/user.js"; import TGLogger from "@utils/TGLogger.js"; import TGNotify from "@utils/TGNotify.js"; import { storeToRefs } from "pinia"; @@ -90,11 +89,17 @@ type SignAccount = { /** 奖励信息 */ reward?: TGApp.BBS.Sign.HomeAward; }; +/** 签到组件参数 */ +type TusSignProps = { + /** 米社账号 */ + acCur: TGApp.App.Account.User | undefined; +}; -const { cookie, uid } = storeToRefs(useUserStore()); const { gameList } = storeToRefs(useBBSStore()); const loadScript = defineModel(); +const props = defineProps(); + const loadState = ref(false); const loadSign = ref(false); const signAccounts = ref>([]); @@ -103,7 +108,7 @@ const gameAccounts = shallowRef>([]); defineExpose({ tryAuto }); watch( - () => uid.value, + () => props.acCur, async () => await loadData(), ); @@ -120,8 +125,8 @@ function getGameInfo(biz: string): SignGameInfo { async function loadData(): Promise { gameAccounts.value = []; signAccounts.value = []; - if (uid.value === undefined) return; - gameAccounts.value = await TSUserAccount.game.getAccount(uid.value); + if (props.acCur === undefined) return; + gameAccounts.value = await TSUserAccount.game.getAccount(props.acCur.uid); for (const ac of gameAccounts.value) { const info = getGameInfo(ac.gameBiz); signAccounts.value.push({ selected: true, account: ac, info }); @@ -147,6 +152,10 @@ async function deleteAccount(item: SignAccount): Promise { } async function tryRefresh(): Promise { + if (!props.acCur) { + showSnackbar.warn("未检测到当前账号数据"); + return; + } if (loadScript.value) { showSnackbar.warn("任务正在执行中,请稍后再试"); return; @@ -155,15 +164,7 @@ async function tryRefresh(): Promise { loadState.value = true; await TGLogger.ScriptSep("签到任务"); await TGLogger.Script("[签到任务]刷新账户"); - if (!cookie.value) { - await TGLogger.Script("[签到任务]未检测到Cookie"); - showSnackbar.warn("当前账户未登录,请先登录"); - await TGLogger.ScriptSep("签到任务", false); - loadState.value = false; - loadScript.value = false; - return; - } - await refreshState(cookie.value); + await refreshState(props.acCur.cookie, props.acCur.uid); await TGLogger.Script(`[签到任务]刷新账户成功,成功获取${signAccounts.value.length}个账户`); await TGLogger.ScriptSep("签到任务", false); loadScript.value = false; @@ -171,6 +172,10 @@ async function tryRefresh(): Promise { } async function tryAuto(skip: boolean = false): Promise { + if (!props.acCur) { + showSnackbar.warn("未检测到当前账号数据"); + return; + } if (loadScript.value) { showSnackbar.warn("任务正在执行中,请稍后再试"); return; @@ -179,17 +184,9 @@ async function tryAuto(skip: boolean = false): Promise { loadSign.value = true; await TGLogger.ScriptSep("签到任务"); await TGLogger.Script("[签到任务]执行签到"); - if (!cookie.value) { - await TGLogger.Script("[签到任务]未检测到Cookie"); - showSnackbar.warn("当前账户未登录,请先登录"); - await TGLogger.ScriptSep("签到任务", false); - loadScript.value = false; - loadSign.value = false; - return; - } if (signAccounts.value.length === 0 || signAccounts.value.some((i) => i.stat === undefined)) { await TGLogger.Script("[签到任务]未检测到游戏账户或签到状态,正在刷新"); - await refreshState(cookie.value); + await refreshState(props.acCur.cookie, props.acCur.uid); } const selected = signAccounts.value.filter((i) => i.selected); if (selected.length === 0) { @@ -200,23 +197,22 @@ async function tryAuto(skip: boolean = false): Promise { loadSign.value = false; return; } - await trySign(selected, cookie.value, skip); - await refreshState(cookie.value); + await trySign(selected, props.acCur.cookie, skip); + await refreshState(props.acCur.cookie, props.acCur.uid); await TGLogger.Script("[签到任务]签到任务执行完毕"); await TGLogger.ScriptSep("签到任务", false); loadScript.value = false; loadSign.value = false; } -async function refreshState(ck: TGApp.App.Account.Cookie): Promise { - if (uid.value === undefined) return; +async function refreshState(ck: TGApp.App.Account.Cookie, uid: string): Promise { if (signAccounts.value.length === 0) { await TGLogger.Script("[签到任务]未检测到游戏账户,正在获取"); const gameResp = await takumiReq.bind.gameRoles(ck); if (Array.isArray(gameResp)) { await TGLogger.Script("[签到任务]获取游戏账户成功"); - await TSUserAccount.game.saveAccounts(uid.value, gameResp); - gameAccounts.value = await TSUserAccount.game.getAccount(uid.value); + await TSUserAccount.game.saveAccounts(uid, gameResp); + gameAccounts.value = await TSUserAccount.game.getAccount(uid); for (const ac of gameAccounts.value) { const info = getGameInfo(ac.gameBiz); const find = signAccounts.value.find((i) => i.account === ac); diff --git a/src/pages/User/Scripts.vue b/src/pages/User/Scripts.vue index 0209f871..50b59d00 100644 --- a/src/pages/User/Scripts.vue +++ b/src/pages/User/Scripts.vue @@ -32,18 +32,6 @@ {{ item.raw.brief.nickname }} UID:{{ item.raw.uid }} -
- - mdi-account-check - - -
@@ -61,8 +49,8 @@
- - + +
@@ -81,6 +69,7 @@ import painterReq from "@req/painterReq.js"; import TSUserAccount from "@Sqlm/userAccount.js"; import useUserStore from "@store/user.js"; import { exit } from "@tauri-apps/plugin-process"; +import TGLogger from "@utils/TGLogger.js"; import TGNotify from "@utils/TGNotify.js"; import { storeToRefs } from "pinia"; import { onBeforeMount, onMounted, ref, shallowRef, useTemplateRef } from "vue"; @@ -89,7 +78,7 @@ import { useRoute, useRouter } from "vue-router"; const route = useRoute(); const router = useRouter(); -const { uid, briefInfo, cookie, account } = storeToRefs(useUserStore()); +const { uid } = storeToRefs(useUserStore()); // 路由参数 const autoRun = ref(false); @@ -97,10 +86,12 @@ const exitAfter = ref(false); const skipGeetest = ref(false); const targetUids = shallowRef>([]); -const accounts = shallowRef>([]); -const curAccount = shallowRef(); const runScript = ref(false); const runAll = ref(false); + +const accounts = shallowRef>([]); +const curAccount = shallowRef(); + const missionEl = useTemplateRef("mission"); const signEl = useTemplateRef("sign"); @@ -137,7 +128,12 @@ async function tryAutoRun(): Promise { } const startTime = Date.now(); for (const uid of uids) { - await loadAccount(uid); + const acFind = await TSUserAccount.account.getAccount(uid); + if (!acFind) { + await TGLogger.Script(`未检测到 ${uid} 对应账号数据,跳过`); + continue; + } + curAccount.value = acFind; await tryExecAll(); } if (exitAfter.value) { @@ -149,31 +145,9 @@ async function tryAutoRun(): Promise { } } -async function loadAccount(ac: string): Promise { - if (uid.value && ac === uid.value) { - showSnackbar.warn("该账户已经登录,无需切换"); - return; - } - const accountGet = await TSUserAccount.account.getAccount(ac); - if (!accountGet) { - showSnackbar.warn(`未找到${uid}的账号信息,请重新登录`); - return; - } - uid.value = ac; - briefInfo.value = accountGet.brief; - cookie.value = accountGet.cookie; - const gameAccount = await TSUserAccount.game.getCurAccount(ac); - if (!gameAccount) { - showSnackbar.warn(`未找到${uid.value}的游戏账号信息,请尝试刷新`); - return; - } - account.value = gameAccount; - showSnackbar.success(`成功切换到用户${uid.value}`); -} - async function tryCkVerify(): Promise { - if (!cookie.value) { - showSnackbar.warn("当前账号未登录,请先登录"); + if (!curAccount.value) { + showSnackbar.warn("未检测到当前登录账号"); return; } const check = await showDialog.check("确定验证?", "将通过执行米社社区打卡以验证ck有效性"); @@ -182,9 +156,9 @@ async function tryCkVerify(): Promise { return; } const ck = { - stoken: cookie.value.stoken, - stuid: cookie.value.stuid, - mid: cookie.value.mid, + stoken: curAccount.value.cookie.stoken, + stuid: curAccount.value.cookie.stuid, + mid: curAccount.value.cookie.mid, }; let flag = false; let challenge: string | undefined = undefined; @@ -211,10 +185,6 @@ async function tryCkVerify(): Promise { } async function tryExecAll(): Promise { - if (!cookie.value) { - showSnackbar.warn("当前账号未登录,请先登录"); - return; - } if (!curAccount.value) { showSnackbar.warn("当前账号未选择,请先选择账号"); return;