mirror of
https://github.com/BTMuli/TeyvatGuide.git
synced 2025-12-16 09:58:13 +08:00
🐛 修复 ck 读取失败
This commit is contained in:
@@ -1,8 +1,8 @@
|
|||||||
<template>
|
<template>
|
||||||
<TOLoading v-model="loading" :title="loadingTitle" />
|
<ToLoading v-model="loading" :title="loadingTitle" />
|
||||||
<v-list class="config-list">
|
<v-list class="config-list">
|
||||||
<v-list-subheader inset class="config-header"> 应用信息 </v-list-subheader>
|
<v-list-subheader :inset="true" class="config-header"> 应用信息 </v-list-subheader>
|
||||||
<v-divider inset class="border-opacity-75" />
|
<v-divider :inset="true" class="border-opacity-75" />
|
||||||
<v-list-item title="Tauri 版本" @click="toOuter('https://next--tauri.netlify.app/')">
|
<v-list-item title="Tauri 版本" @click="toOuter('https://next--tauri.netlify.app/')">
|
||||||
<template #prepend>
|
<template #prepend>
|
||||||
<img class="config-icon" src="/platforms/tauri.webp" alt="Tauri" />
|
<img class="config-icon" src="/platforms/tauri.webp" alt="Tauri" />
|
||||||
@@ -56,8 +56,8 @@
|
|||||||
</v-btn>
|
</v-btn>
|
||||||
</template>
|
</template>
|
||||||
</v-list-item>
|
</v-list-item>
|
||||||
<v-list-subheader inset class="config-header"> 系统信息 </v-list-subheader>
|
<v-list-subheader :inset="true" class="config-header"> 系统信息 </v-list-subheader>
|
||||||
<v-divider inset class="border-opacity-75" />
|
<v-divider :inset="true" class="border-opacity-75" />
|
||||||
<v-list-item title="系统平台">
|
<v-list-item title="系统平台">
|
||||||
<template #prepend>
|
<template #prepend>
|
||||||
<v-icon>mdi-desktop-classic</v-icon>
|
<v-icon>mdi-desktop-classic</v-icon>
|
||||||
@@ -96,8 +96,8 @@
|
|||||||
{{ dbInfo.find((item) => item.key === "appVersion")?.updated }}</v-list-item-subtitle
|
{{ dbInfo.find((item) => item.key === "appVersion")?.updated }}</v-list-item-subtitle
|
||||||
>
|
>
|
||||||
</v-list-item>
|
</v-list-item>
|
||||||
<v-list-subheader inset class="config-header"> 设置 </v-list-subheader>
|
<v-list-subheader :inset="true" class="config-header"> 设置 </v-list-subheader>
|
||||||
<v-divider inset class="border-opacity-75" />
|
<v-divider :inset="true" class="border-opacity-75" />
|
||||||
<v-list-item>
|
<v-list-item>
|
||||||
<template #prepend>
|
<template #prepend>
|
||||||
<v-icon>mdi-view-dashboard</v-icon>
|
<v-icon>mdi-view-dashboard</v-icon>
|
||||||
@@ -106,8 +106,8 @@
|
|||||||
v-model="showHome"
|
v-model="showHome"
|
||||||
:items="homeStore.getShowItems()"
|
:items="homeStore.getShowItems()"
|
||||||
label="首页显示组件"
|
label="首页显示组件"
|
||||||
multiple
|
:multiple="true"
|
||||||
chips
|
:chips="true"
|
||||||
/>
|
/>
|
||||||
<template #append>
|
<template #append>
|
||||||
<v-btn class="card-btn" @click="submitHome">
|
<v-btn class="card-btn" @click="submitHome">
|
||||||
@@ -123,8 +123,8 @@
|
|||||||
<v-list-item prepend-icon="mdi-delete" title="清除用户缓存" @click="tryConfirm('delUser')" />
|
<v-list-item prepend-icon="mdi-delete" title="清除用户缓存" @click="tryConfirm('delUser')" />
|
||||||
<v-list-item prepend-icon="mdi-delete" title="清除临时数据" @click="tryConfirm('delTemp')" />
|
<v-list-item prepend-icon="mdi-delete" title="清除临时数据" @click="tryConfirm('delTemp')" />
|
||||||
<v-list-item prepend-icon="mdi-cog" title="恢复默认设置" @click="tryConfirm('delApp')" />
|
<v-list-item prepend-icon="mdi-cog" title="恢复默认设置" @click="tryConfirm('delApp')" />
|
||||||
<v-list-subheader inset class="config-header"> 调试 </v-list-subheader>
|
<v-list-subheader :inset="true" class="config-header"> 调试 </v-list-subheader>
|
||||||
<v-divider inset class="border-opacity-75" />
|
<v-divider :inset="true" class="border-opacity-75" />
|
||||||
<v-list-item v-if="appStore.devEnv" title="调试模式" subtitle="开启后将显示调试信息">
|
<v-list-item v-if="appStore.devEnv" title="调试模式" subtitle="开启后将显示调试信息">
|
||||||
<template #prepend>
|
<template #prepend>
|
||||||
<v-icon>mdi-bug</v-icon>
|
<v-icon>mdi-bug</v-icon>
|
||||||
@@ -133,7 +133,7 @@
|
|||||||
<v-switch
|
<v-switch
|
||||||
v-model="appStore.devMode"
|
v-model="appStore.devMode"
|
||||||
:label="appStore.devMode ? '开启' : '关闭'"
|
:label="appStore.devMode ? '开启' : '关闭'"
|
||||||
inset
|
:inset="true"
|
||||||
color="#FAC51E"
|
color="#FAC51E"
|
||||||
@click="submitDevMode"
|
@click="submitDevMode"
|
||||||
/>
|
/>
|
||||||
@@ -161,8 +161,8 @@
|
|||||||
prepend-icon="mdi-database-check"
|
prepend-icon="mdi-database-check"
|
||||||
@click="tryConfirm('checkDB')"
|
@click="tryConfirm('checkDB')"
|
||||||
/>
|
/>
|
||||||
<v-list-subheader inset class="config-header"> 路径 </v-list-subheader>
|
<v-list-subheader :inset="true" class="config-header"> 路径 </v-list-subheader>
|
||||||
<v-divider inset class="border-opacity-75" />
|
<v-divider :inset="true" class="border-opacity-75" />
|
||||||
<v-list-item prepend-icon="mdi-database">
|
<v-list-item prepend-icon="mdi-database">
|
||||||
<v-list-item-title>本地数据库路径</v-list-item-title>
|
<v-list-item-title>本地数据库路径</v-list-item-title>
|
||||||
<v-list-item-subtitle>{{ appStore.dataPath.dbDataPath }}</v-list-item-subtitle>
|
<v-list-item-subtitle>{{ appStore.dataPath.dbDataPath }}</v-list-item-subtitle>
|
||||||
@@ -181,7 +181,7 @@
|
|||||||
{{ snackbarText }}
|
{{ snackbarText }}
|
||||||
</v-snackbar>
|
</v-snackbar>
|
||||||
<!-- 确认弹窗 -->
|
<!-- 确认弹窗 -->
|
||||||
<TOConfirm
|
<ToConfirm
|
||||||
v-model="confirmShow"
|
v-model="confirmShow"
|
||||||
:model-input="confirmInput"
|
:model-input="confirmInput"
|
||||||
:title="confirmText"
|
:title="confirmText"
|
||||||
@@ -194,8 +194,8 @@
|
|||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
// vue
|
// vue
|
||||||
import { computed, onMounted, ref } from "vue";
|
import { computed, onMounted, ref } from "vue";
|
||||||
import TOLoading from "../components/overlay/to-loading.vue";
|
import ToLoading from "../components/overlay/to-loading.vue";
|
||||||
import TOConfirm from "../components/overlay/to-confirm.vue";
|
import ToConfirm from "../components/overlay/to-confirm.vue";
|
||||||
// tauri
|
// tauri
|
||||||
import { app, fs, os } from "@tauri-apps/api";
|
import { app, fs, os } from "@tauri-apps/api";
|
||||||
// store
|
// store
|
||||||
@@ -217,21 +217,21 @@ const homeStore = useHomeStore();
|
|||||||
const achievementsStore = useAchievementsStore();
|
const achievementsStore = useAchievementsStore();
|
||||||
|
|
||||||
// About App
|
// About App
|
||||||
const versionApp = ref("" as string);
|
const versionApp = ref<string>("");
|
||||||
const versionTauri = ref("" as string);
|
const versionTauri = ref<string>("");
|
||||||
const buildTime = computed(() => appStore.buildTime);
|
const buildTime = computed(() => appStore.buildTime);
|
||||||
|
|
||||||
// About OS
|
// About OS
|
||||||
const osPlatform = ref("" as string);
|
const osPlatform = ref<string>("");
|
||||||
const osVersion = ref("" as string);
|
const osVersion = ref<string>("");
|
||||||
const dbInfo = ref([] as { key: string; value: string; updated: string }[]);
|
const dbInfo = ref<Array<{ key: string; value: string; updated: string }>>([]);
|
||||||
|
|
||||||
// loading
|
// loading
|
||||||
const loading = ref(true as boolean);
|
const loading = ref<boolean>(true);
|
||||||
const loadingTitle = ref("正在加载..." as string);
|
const loadingTitle = ref<string>("正在加载...");
|
||||||
|
|
||||||
// data
|
// data
|
||||||
const showHome = ref(homeStore.getShowValue() as string[]);
|
const showHome = ref<string[]>(homeStore.getShowValue());
|
||||||
const userInfo = computed(() => {
|
const userInfo = computed(() => {
|
||||||
const info = userStore.getBriefInfo();
|
const info = userStore.getBriefInfo();
|
||||||
return {
|
return {
|
||||||
@@ -243,17 +243,17 @@ const userInfo = computed(() => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// snackbar
|
// snackbar
|
||||||
const snackbar = ref(false as boolean);
|
const snackbar = ref<boolean>(false);
|
||||||
const snackbarText = ref("" as string);
|
const snackbarText = ref<string>("");
|
||||||
const snackbarColor = ref("success" as string);
|
const snackbarColor = ref<string>("success");
|
||||||
|
|
||||||
// confirm
|
// confirm
|
||||||
const confirmText = ref("" as string);
|
const confirmText = ref<string>("");
|
||||||
const isConfirmInput = ref(false as boolean);
|
const isConfirmInput = ref<boolean>(false);
|
||||||
const confirmInput = ref("" as string);
|
const confirmInput = ref<string>("");
|
||||||
const confirmSub = ref("" as string);
|
const confirmSub = ref<string>("");
|
||||||
const confirmOper = ref("" as string);
|
const confirmOper = ref<string>("");
|
||||||
const confirmShow = ref(false as boolean);
|
const confirmShow = ref<boolean>(false);
|
||||||
|
|
||||||
// load version
|
// load version
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
@@ -263,6 +263,10 @@ onMounted(async () => {
|
|||||||
osVersion.value = await os.version();
|
osVersion.value = await os.version();
|
||||||
try {
|
try {
|
||||||
dbInfo.value = await TGSqlite.getAppData();
|
dbInfo.value = await TGSqlite.getAppData();
|
||||||
|
const ck = dbInfo.value.find((v) => v.key === "cookie");
|
||||||
|
if (ck) {
|
||||||
|
userStore.cookie = JSON.parse(ck.value);
|
||||||
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
snackbarText.value = "读取数据库失败!";
|
snackbarText.value = "读取数据库失败!";
|
||||||
snackbarColor.value = "warn";
|
snackbarColor.value = "warn";
|
||||||
@@ -272,12 +276,12 @@ onMounted(async () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// 打开外部链接
|
// 打开外部链接
|
||||||
function toOuter(url: string) {
|
function toOuter(url: string): void {
|
||||||
window.open(url);
|
window.open(url);
|
||||||
}
|
}
|
||||||
|
|
||||||
// open confirm
|
// open confirm
|
||||||
function tryConfirm(oper: string) {
|
function tryConfirm(oper: string): void {
|
||||||
confirmSub.value = "";
|
confirmSub.value = "";
|
||||||
isConfirmInput.value = false;
|
isConfirmInput.value = false;
|
||||||
switch (oper) {
|
switch (oper) {
|
||||||
@@ -338,7 +342,7 @@ function tryConfirm(oper: string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// transfer confirm oper
|
// transfer confirm oper
|
||||||
async function doConfirm(oper: string) {
|
async function doConfirm(oper: string): Promise<void> {
|
||||||
await new Promise((resolve) => setTimeout(resolve, 500));
|
await new Promise((resolve) => setTimeout(resolve, 500));
|
||||||
switch (oper) {
|
switch (oper) {
|
||||||
case "backup":
|
case "backup":
|
||||||
@@ -377,7 +381,7 @@ async function doConfirm(oper: string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// confirmOper
|
// confirmOper
|
||||||
async function backupData() {
|
async function backupData(): Promise<void> {
|
||||||
loadingTitle.value = "正在备份数据...";
|
loadingTitle.value = "正在备份数据...";
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
const achievements = await TGSqlite.getUIAF();
|
const achievements = await TGSqlite.getUIAF();
|
||||||
@@ -392,7 +396,7 @@ async function backupData() {
|
|||||||
snackbar.value = true;
|
snackbar.value = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
async function restoreData() {
|
async function restoreData(): Promise<void> {
|
||||||
loadingTitle.value = "正在恢复数据...";
|
loadingTitle.value = "正在恢复数据...";
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
const fail = [];
|
const fail = [];
|
||||||
@@ -420,7 +424,7 @@ async function restoreData() {
|
|||||||
loading.value = false;
|
loading.value = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
async function delTempData() {
|
async function delTempData(): Promise<void> {
|
||||||
await fs.removeDir("tempData", {
|
await fs.removeDir("tempData", {
|
||||||
dir: fs.BaseDirectory.AppLocalData,
|
dir: fs.BaseDirectory.AppLocalData,
|
||||||
recursive: true,
|
recursive: true,
|
||||||
@@ -430,7 +434,7 @@ async function delTempData() {
|
|||||||
snackbar.value = true;
|
snackbar.value = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
async function delUserData() {
|
async function delUserData(): Promise<void> {
|
||||||
await fs.removeDir("userData", {
|
await fs.removeDir("userData", {
|
||||||
dir: fs.BaseDirectory.AppLocalData,
|
dir: fs.BaseDirectory.AppLocalData,
|
||||||
recursive: true,
|
recursive: true,
|
||||||
@@ -442,7 +446,7 @@ async function delUserData() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 恢复默认配置
|
// 恢复默认配置
|
||||||
function initAppData() {
|
function initAppData(): void {
|
||||||
appStore.init();
|
appStore.init();
|
||||||
homeStore.init();
|
homeStore.init();
|
||||||
achievementsStore.init();
|
achievementsStore.init();
|
||||||
@@ -454,7 +458,7 @@ function initAppData() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 开启 dev 模式
|
// 开启 dev 模式
|
||||||
function submitDevMode() {
|
function submitDevMode(): void {
|
||||||
appStore.devMode
|
appStore.devMode
|
||||||
? (snackbarText.value = "已关闭 dev 模式!")
|
? (snackbarText.value = "已关闭 dev 模式!")
|
||||||
: (snackbarText.value = "已开启 dev 模式!");
|
: (snackbarText.value = "已开启 dev 模式!");
|
||||||
@@ -463,7 +467,7 @@ function submitDevMode() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 修改首页显示
|
// 修改首页显示
|
||||||
function submitHome() {
|
function submitHome(): void {
|
||||||
// 获取已选
|
// 获取已选
|
||||||
const show = showHome.value;
|
const show = showHome.value;
|
||||||
if (show.length < 1) {
|
if (show.length < 1) {
|
||||||
@@ -480,8 +484,15 @@ function submitHome() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 刷新用户数据
|
// 刷新用户数据
|
||||||
async function refreshUser() {
|
async function refreshUser(): Promise<void> {
|
||||||
const ck = userStore.cookie;
|
const ck = userStore.cookie;
|
||||||
|
// ck = {}
|
||||||
|
if (Object.keys(ck).length < 1) {
|
||||||
|
snackbarText.value = "请先输入 Cookie!";
|
||||||
|
snackbarColor.value = "error";
|
||||||
|
snackbar.value = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
let failCount = 0;
|
let failCount = 0;
|
||||||
loadingTitle.value = "正在验证 ltoken...";
|
loadingTitle.value = "正在验证 ltoken...";
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
@@ -495,7 +506,7 @@ async function refreshUser() {
|
|||||||
if (typeof ltokenRes === "string") {
|
if (typeof ltokenRes === "string") {
|
||||||
ck.ltoken = ltokenRes;
|
ck.ltoken = ltokenRes;
|
||||||
await TGSqlite.saveAppData("cookie", JSON.stringify(ck));
|
await TGSqlite.saveAppData("cookie", JSON.stringify(ck));
|
||||||
await userStore.initCookie(ck);
|
userStore.initCookie(ck);
|
||||||
loadingTitle.value = "刷新成功!正在获取用户头像、昵称信息";
|
loadingTitle.value = "刷新成功!正在获取用户头像、昵称信息";
|
||||||
} else {
|
} else {
|
||||||
console.error(ltokenRes);
|
console.error(ltokenRes);
|
||||||
@@ -507,7 +518,7 @@ async function refreshUser() {
|
|||||||
if (typeof cookieTokenRes === "string") {
|
if (typeof cookieTokenRes === "string") {
|
||||||
ck.cookie_token = cookieTokenRes;
|
ck.cookie_token = cookieTokenRes;
|
||||||
await TGSqlite.saveAppData("cookie", JSON.stringify(ck));
|
await TGSqlite.saveAppData("cookie", JSON.stringify(ck));
|
||||||
await userStore.initCookie(ck);
|
userStore.initCookie(ck);
|
||||||
console.log(JSON.stringify(ck));
|
console.log(JSON.stringify(ck));
|
||||||
loadingTitle.value = "刷新成功!正在获取用户头像、昵称信息";
|
loadingTitle.value = "刷新成功!正在获取用户头像、昵称信息";
|
||||||
} else {
|
} else {
|
||||||
@@ -516,9 +527,8 @@ async function refreshUser() {
|
|||||||
failCount++;
|
failCount++;
|
||||||
}
|
}
|
||||||
const infoRes = await TGRequest.User.byCookie.getUserInfo(ck.cookie_token, ck.account_id);
|
const infoRes = await TGRequest.User.byCookie.getUserInfo(ck.cookie_token, ck.account_id);
|
||||||
if (infoRes.hasOwnProperty("nickname")) {
|
if ("nickname" in infoRes) {
|
||||||
const info = infoRes as TGApp.App.Account.BriefInfo;
|
userStore.setBriefInfo(infoRes);
|
||||||
userStore.setBriefInfo(info);
|
|
||||||
loadingTitle.value = "获取成功!正在获取用户游戏账号信息";
|
loadingTitle.value = "获取成功!正在获取用户游戏账号信息";
|
||||||
} else {
|
} else {
|
||||||
console.error(infoRes);
|
console.error(infoRes);
|
||||||
@@ -547,7 +557,7 @@ async function refreshUser() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 输入 Cookie
|
// 输入 Cookie
|
||||||
async function inputCookie() {
|
async function inputCookie(): Promise<void> {
|
||||||
const cookie = confirmInput.value;
|
const cookie = confirmInput.value;
|
||||||
if (cookie === "") {
|
if (cookie === "") {
|
||||||
snackbarText.value = "Cookie 为空!";
|
snackbarText.value = "Cookie 为空!";
|
||||||
@@ -572,14 +582,12 @@ async function inputCookie() {
|
|||||||
try {
|
try {
|
||||||
await TGRequest.User.init(ticket, uid);
|
await TGRequest.User.init(ticket, uid);
|
||||||
const ck = await TGSqlite.getCookie();
|
const ck = await TGSqlite.getCookie();
|
||||||
await userStore.initCookie(ck);
|
userStore.initCookie(ck);
|
||||||
loadingTitle.value = "正在获取用户信息...";
|
loadingTitle.value = "正在获取用户信息...";
|
||||||
const cookie_token = userStore.getCookieItem("cookie_token");
|
const cookie_token = userStore.getCookieItem("cookie_token");
|
||||||
const resUser = await TGRequest.User.byCookie.getUserInfo(cookie_token, uid);
|
const resUser = await TGRequest.User.byCookie.getUserInfo(cookie_token, uid);
|
||||||
// . 判断返回是否为 BTMuli.User.Account.BriefInfo
|
if ("nickname" in resUser) {
|
||||||
if (resUser.hasOwnProperty("nickname")) {
|
userStore.setBriefInfo(resUser);
|
||||||
const info = resUser as TGApp.App.Account.BriefInfo;
|
|
||||||
userStore.setBriefInfo(info);
|
|
||||||
appStore.isLogin = true;
|
appStore.isLogin = true;
|
||||||
}
|
}
|
||||||
const resAccounts = await TGRequest.User.byCookie.getAccounts(cookie_token, uid);
|
const resAccounts = await TGRequest.User.byCookie.getAccounts(cookie_token, uid);
|
||||||
@@ -599,7 +607,7 @@ async function inputCookie() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 检查 SQLite 数据库
|
// 检查 SQLite 数据库
|
||||||
async function checkDB() {
|
async function checkDB(): Promise<void> {
|
||||||
loadingTitle.value = "正在检查数据库表单完整性...";
|
loadingTitle.value = "正在检查数据库表单完整性...";
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
const res = await TGSqlite.check();
|
const res = await TGSqlite.check();
|
||||||
@@ -636,7 +644,7 @@ async function checkDB() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 重置 SQLite 数据库
|
// 重置 SQLite 数据库
|
||||||
async function resetDB() {
|
async function resetDB(): Promise<void> {
|
||||||
loadingTitle.value = "正在重置数据库...";
|
loadingTitle.value = "正在重置数据库...";
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
await TGSqlite.reset();
|
await TGSqlite.reset();
|
||||||
@@ -649,7 +657,7 @@ async function resetDB() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 更新 SQLite 数据库
|
// 更新 SQLite 数据库
|
||||||
async function updateDB() {
|
async function updateDB(): Promise<void> {
|
||||||
await new Promise((resolve) => setTimeout(resolve, 500));
|
await new Promise((resolve) => setTimeout(resolve, 500));
|
||||||
loadingTitle.value = "正在更新数据库...";
|
loadingTitle.value = "正在更新数据库...";
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
|
|||||||
Reference in New Issue
Block a user