🔊 完善基础页面的 log #83

This commit is contained in:
目棃
2024-01-23 18:20:23 +08:00
parent 150755cbef
commit 8aaf18dbe2
15 changed files with 167 additions and 70 deletions

View File

@@ -114,6 +114,7 @@ import ToNamecard from "../../components/overlay/to-namecard.vue";
import { AppAchievementSeriesData, AppNameCardsData } from "../../data";
import TGSqlite from "../../plugins/Sqlite";
import { useAchievementsStore } from "../../store/modules/achievements";
import TGLogger from "../../utils/TGLogger";
import { getNowStr } from "../../utils/toolFunc";
import { getUiafHeader, readUiafData, verifyUiafData } from "../../utils/UIAF";
@@ -145,10 +146,6 @@ const renderSelect = computed(() => {
const route = useRoute();
const router = useRouter();
onBeforeMount(async () => {
await flushOverview();
});
// 更改是否隐藏已完成
async function switchHideFin() {
const text = hideFin.value ? "显示已完成" : "隐藏已完成";
@@ -177,8 +174,12 @@ async function flushOverview(): Promise<void> {
}
onMounted(async () => {
await TGLogger.Info("[Achievements][onMounted] 打开成就页面");
await TGLogger.Info(`[Achievements][onMounted] 当前版本:${achievementsStore.lastVersion}`);
loading.value = true;
loadingTitle.value = "正在获取成就系列数据";
await flushOverview();
await TGLogger.Info(`[Achievements][onMounted] ${title.value}`);
allSeriesData.value = await getSeriesData();
achievementsStore.lastVersion = await TGSqlite.getLatestAchievementVersion();
loadingTitle.value = "正在获取成就数据";
@@ -247,10 +248,10 @@ async function searchCard(): Promise<void> {
selectedSeries.value = -1;
loadingTitle.value = "正在搜索";
loading.value = true;
await TGLogger.Info(`[Achievements][searchCard] 搜索内容:${search.value}`);
selectedAchievement.value = await getAchiData("search", search.value);
await nextTick(() => {
loading.value = false;
// 等 500ms 动画
setTimeout(() => {
if (renderSelect.value.length === 0) {
showSnackbar({
@@ -264,10 +265,12 @@ async function searchCard(): Promise<void> {
});
}, 500);
});
await TGLogger.Info(`[Achievements][searchCard] 搜索到 ${renderSelect.value.length} 条成就数据`);
}
// 导入 UIAF 数据,进行数据合并、刷新
async function importJson(): Promise<void> {
await TGLogger.Info("[Achievements][importJson] 导入 UIAF 数据");
const selectedFile = await dialog.open({
title: "选择 UIAF 数据文件",
multiple: false,
@@ -285,6 +288,7 @@ async function importJson(): Promise<void> {
color: "cancel",
text: "已取消文件选择",
});
await TGLogger.Info("[Achievements][importJson] 已取消文件选择");
return;
}
if (!(await verifyUiafData(<string>selectedFile))) {
@@ -292,9 +296,15 @@ async function importJson(): Promise<void> {
color: "error",
text: "读取 UIAF 数据失败,请检查文件是否符合规范",
});
await TGLogger.Error("[Achievements][importJson] 读取 UIAF 数据失败,请检查文件是否符合规范");
return;
}
const remoteRaw = await readUiafData(<string>selectedFile);
await TGLogger.Info("[Achievements][importJson] 读取 UIAF 数据成功");
await TGLogger.Info(`[Achievements][importJson] 导入来源:${remoteRaw.info.export_app}`);
await TGLogger.Info(`[Achievements][importJson] 导入版本:${remoteRaw.info.export_app_version}`);
await TGLogger.Info(`[Achievements][importJson] 导入时间:${remoteRaw.info.export_timestamp}`);
await TGLogger.Info(`[Achievements][importJson] 导入数据:${remoteRaw.list.length}`);
loadingTitle.value = "正在解析数据";
loading.value = true;
loadingTitle.value = "正在合并成就数据";
@@ -307,12 +317,14 @@ async function importJson(): Promise<void> {
// 导出
async function exportJson(): Promise<void> {
await TGLogger.Info("[Achievements][exportJson] 导出 UIAF 数据");
// 判断是否有数据
if (achievementsStore.finAchievements === 0) {
showSnackbar({
color: "error",
text: "没有可导出的数据",
});
await TGLogger.Warn("[Achievements][exportJson] 没有可导出的数据");
return;
}
// 获取本地数据
@@ -331,15 +343,18 @@ async function exportJson(): Promise<void> {
],
defaultPath: `${await path.downloadDir()}${path.sep}${fileName}.json`,
});
if (isSave) {
await fs.writeTextFile(isSave, JSON.stringify(UiafData));
showSnackbar({ text: "导出成功" });
} else {
if (isSave === null) {
showSnackbar({
color: "warn",
text: "导出已取消",
text: "已取消导出",
});
await TGLogger.Info("[Achievements][exportJson] 已取消导出");
return;
}
await fs.writeTextFile(isSave, JSON.stringify(UiafData));
showSnackbar({ text: "导出成功" });
await TGLogger.Info("[Achievements][exportJson] 导出成功");
await TGLogger.Info(`[Achievements][exportJson] 导出路径:${isSave}`);
}
function getIcon(series: number): string | undefined {
@@ -348,6 +363,7 @@ function getIcon(series: number): string | undefined {
// 处理外部导入
async function handleImportOuter(app: string): Promise<void> {
await TGLogger.Info(`[Achievements][handleImportOuter] 导入来源:${app}`);
const confirm = await showConfirm({
title: "是否导入祈愿数据?",
text: `来源APP${app}`,
@@ -357,6 +373,7 @@ async function handleImportOuter(app: string): Promise<void> {
color: "warn",
text: "已取消导入",
});
await TGLogger.Info("[Achievements][handleImportOuter] 已取消导入");
return;
}
// 读取 剪贴板
@@ -373,8 +390,11 @@ async function handleImportOuter(app: string): Promise<void> {
color: "success",
text: "导入成功,即将刷新页面",
});
await TGLogger.Info("[Achievements][handleImportOuter] 导入成功");
} catch (e) {
console.error(e);
if (e instanceof Error)
await TGLogger.Error(`[Achievements][handleImportOuter] 导入失败 ${e.name}: ${e.message}`);
else console.error(e);
showSnackbar({
color: "error",
text: "读取 UIAF 数据失败,请检查文件是否符合规范",
@@ -411,6 +431,11 @@ async function setAchi(
target ? "已完成" : "未完成"
}`,
});
await TGLogger.Info(
`[Achievements][setAchi] 已将成就 ${newAchievement.name}[${newAchievement.id}] 标记为 ${
target ? "已完成" : "未完成"
}`,
);
}
/* 以下为数据库操作 */

View File

@@ -42,6 +42,7 @@ import { nextTick, onMounted, ref } from "vue";
import { useRouter } from "vue-router";
import ToLoading from "../../components/overlay/to-loading.vue";
import TGLogger from "../../utils/TGLogger";
import { createTGWindow } from "../../utils/TGWindow";
import TGRequest from "../../web/request/TGRequest";
import TGUtils from "../../web/utils/TGUtils";
@@ -74,6 +75,7 @@ const annoCards = ref<AnnoCard>({
const annoData = ref<TGApp.BBS.Announcement.ListData>(<TGApp.BBS.Announcement.ListData>{});
onMounted(async () => {
await TGLogger.Info("[Announcements][onMounted] 打开公告页面");
loadingTitle.value = "正在获取公告数据";
loading.value = true;
annoData.value = await TGRequest.Anno.getList();
@@ -84,7 +86,7 @@ onMounted(async () => {
game: listCards.filter((item) => item.typeLabel === AnnoType.game),
};
loadingTitle.value = "正在渲染公告数据";
await nextTick(() => {
await nextTick(async () => {
loading.value = false;
});
});
@@ -96,13 +98,16 @@ function parseTitle(title: string): string {
}
async function switchNews(): Promise<void> {
await TGLogger.Info("[Announcements][switchNews] 切换米游社咨讯");
await router.push("/news/2");
}
function createAnno(item: TGApp.App.Announcement.ListCard): void {
const annoPath = `/anno_detail/${item.id}`;
const annoTitle = `Anno_${item.id} ${item.title}`;
createTGWindow(annoPath, "Sub_window", annoTitle, 960, 720, false, false);
TGLogger.Info(`[Announcements][createAnno][${item.id}] 打开公告窗口`).then(() =>
createTGWindow(annoPath, "Sub_window", annoTitle, 960, 720, false, false),
);
}
</script>

View File

@@ -67,6 +67,7 @@ import { useAppStore } from "../../store/modules/app";
import { useHomeStore } from "../../store/modules/home";
import { backUpUserData, restoreUserData } from "../../utils/dataBS";
import { getBuildTime } from "../../utils/TGBuild";
import TGLogger from "../../utils/TGLogger";
import { bytesToSize, getCacheDir, getDeviceInfo, getRandomString } from "../../utils/toolFunc";
import TGRequest from "../../web/request/TGRequest";
@@ -83,7 +84,10 @@ const loadingTitle = ref<string>("正在加载...");
const loadingSub = ref<string>("");
const showReset = ref<boolean>(false);
onMounted(() => (loading.value = false));
onMounted(async () => {
await TGLogger.Info("[Config] 打开设置页面");
loading.value = false;
});
// 备份数据
async function confirmBackup(): Promise<void> {
@@ -112,6 +116,7 @@ async function confirmBackup(): Promise<void> {
});
return;
}
await TGLogger.Info(`[Config][confirmBackup] 选择备份路径 ${dir.toString()}`);
if (typeof dir !== "string") {
showSnackbar({
color: "error",
@@ -120,6 +125,8 @@ async function confirmBackup(): Promise<void> {
return;
}
saveDir = dir;
} else {
await TGLogger.Info(`[Config][confirmBackup] 备份到默认路径 ${saveDir}`);
}
loadingTitle.value = "正在备份数据...";
loading.value = true;
@@ -127,6 +134,7 @@ async function confirmBackup(): Promise<void> {
await backUpUserData(saveDir);
loading.value = false;
showSnackbar({ text: "数据已备份!" });
await TGLogger.Info("[Config][confirmBackup] 备份完成");
}
// 恢复数据
@@ -156,6 +164,7 @@ async function confirmRestore(): Promise<void> {
});
return;
}
await TGLogger.Info(`[Config][confirmRestore] 选择恢复路径 ${dir.toString()}`);
if (typeof dir !== "string") {
showSnackbar({
color: "error",
@@ -164,12 +173,16 @@ async function confirmRestore(): Promise<void> {
return;
}
saveDir = dir;
} else {
await TGLogger.Info(`[Config][confirmRestore] 恢复到默认路径 ${saveDir}`);
}
loadingTitle.value = "正在恢复数据...";
loading.value = true;
loadingSub.value = "祈愿数据需单独恢复";
await restoreUserData(saveDir);
loading.value = false;
showSnackbar({ text: "数据已恢复!" });
await TGLogger.Info("[Config][confirmRestore] 恢复完成");
}
// 更新数据
@@ -194,6 +207,7 @@ async function confirmUpdate(title?: string): Promise<void> {
showSnackbar({
text: "数据库已更新!",
});
await TGLogger.Info("[Config][confirmUpdate] 数据库更新完成");
// 刷新
window.location.reload();
}
@@ -201,6 +215,7 @@ async function confirmUpdate(title?: string): Promise<void> {
// 更新设备信息
async function confirmUpdateDevice(force?: boolean): Promise<void> {
if (force !== undefined && force) {
await TGLogger.Info("[Config][confirmUpdateDevice][force] 开始强制更新设备信息");
const resF = await showConfirm({
title: "确认强制更新设备信息吗?",
text: `DeviceFp:${appStore.deviceInfo.device_fp}`,
@@ -210,6 +225,7 @@ async function confirmUpdateDevice(force?: boolean): Promise<void> {
text: "已取消强制更新设备信息",
color: "cancel",
});
await TGLogger.Info("[Config][confirmUpdateDevice][force] 取消强制更新设备信息");
return;
}
appStore.deviceInfo = await TGRequest.Device.getFp();
@@ -219,13 +235,17 @@ async function confirmUpdateDevice(force?: boolean): Promise<void> {
text: `设备信息获取失败!已使用随机值 ${appStore.deviceInfo.device_fp} 代替`,
color: "warn",
});
await TGLogger.Warn("[Config][confirmUpdateDevice][force] 设备信息获取失败!已使用随机值代替");
} else {
showSnackbar({
text: "设备信息已更新! DeviceFp: " + appStore.deviceInfo.device_fp,
});
}
await TGSqlite.saveAppData("deviceInfo", JSON.stringify(appStore.deviceInfo));
await TGLogger.Info("[Config][confirmUpdateDevice][force] 设备信息更新完成");
return;
}
await TGLogger.Info("[Config][confirmUpdateDevice] 开始更新设备信息");
const localFp = getDeviceInfo("device_fp");
if (localFp !== "0000000000000") {
const res = await showConfirm({
@@ -237,6 +257,7 @@ async function confirmUpdateDevice(force?: boolean): Promise<void> {
text: "已取消更新设备信息",
color: "cancel",
});
await TGLogger.Info("[Config][confirmUpdateDevice] 取消更新设备信息");
return;
}
}
@@ -248,16 +269,19 @@ async function confirmUpdateDevice(force?: boolean): Promise<void> {
showSnackbar({
text: "设备信息获取失败!已使用随机值代替",
});
await TGLogger.Warn("[Config][confirmUpdateDevice] 设备信息获取失败!已使用随机值代替");
return;
}
showSnackbar({
text: "设备信息已更新! DeviceFp: " + appStore.deviceInfo.device_fp,
});
await TGSqlite.saveAppData("deviceInfo", JSON.stringify(appStore.deviceInfo));
await TGLogger.Info("[Config][confirmUpdateDevice] 设备信息更新完成");
}
// 清除用户缓存
async function confirmDelCache(): Promise<void> {
await TGLogger.Info("[Config][confirmDelCache] 开始清除缓存");
const CacheDir = await getCacheDir();
if (CacheDir === false) {
showSnackbar({
@@ -276,6 +300,7 @@ async function confirmDelCache(): Promise<void> {
cacheBSize += size;
}
const cacheSize = bytesToSize(cacheBSize);
await TGLogger.Info(`[Config][confirmDelCache] 当前缓存大小为 ${cacheSize}`);
loading.value = false;
const timeEnd = Date.now();
const res = await showConfirm({
@@ -287,6 +312,7 @@ async function confirmDelCache(): Promise<void> {
color: "cancel",
text: "已取消清除缓存",
});
await TGLogger.Info("[Config][confirmDelCache] 取消清除缓存");
return;
}
for (const dir of CacheDir) {
@@ -295,15 +321,13 @@ async function confirmDelCache(): Promise<void> {
showSnackbar({
text: "缓存已清除!请重新启动应用!",
});
await new Promise(() => {
setTimeout(async () => {
await TauriProcess.exit();
}, 1500);
});
await TGLogger.Info("[Config][confirmDelCache] 缓存清除完成");
await TauriProcess.exit();
}
// 恢复默认设置
async function confirmResetApp(): Promise<void> {
await TGLogger.Info("[Config][confirmResetApp] 开始恢复默认设置");
const res = await showConfirm({
title: "确认恢复默认设置吗?",
});
@@ -312,11 +336,13 @@ async function confirmResetApp(): Promise<void> {
color: "cancel",
text: "已取消恢复默认设置",
});
await TGLogger.Info("[Config][confirmResetApp] 取消恢复默认设置");
return;
}
appStore.init();
homeStore.init();
achievementsStore.init();
await TGLogger.Info("[Config][confirmResetApp] 恢复默认设置完成");
showSnackbar({ text: "已恢复默认配置!即将刷新页面..." });
setTimeout(() => {
window.location.reload();
@@ -354,6 +380,7 @@ async function tryShowReset(): Promise<void> {
// 重置数据库
async function confirmResetDB(title?: string): Promise<void> {
await TGLogger.Info("[Config][confirmResetDB] 开始重置数据库");
const res = await showConfirm({
title: title ?? "确认重置数据库吗?",
text: "请确认已经备份关键数据",
@@ -363,11 +390,13 @@ async function confirmResetDB(title?: string): Promise<void> {
color: "cancel",
text: "已取消重置数据库",
});
await TGLogger.Info("[Config][confirmResetDB] 取消重置数据库");
return;
}
loadingTitle.value = "正在重置数据库...";
loading.value = true;
await TGSqlite.reset();
await TGLogger.Info("[Config][confirmResetDB] 数据库重置完成");
loading.value = false;
showSnackbar({
text: "数据库已重置!请进行再次检查。",

View File

@@ -17,16 +17,16 @@
</template>
<script lang="ts" setup>
import { computed, markRaw, onMounted, onUnmounted, onUpdated, ref, watch } from "vue";
import { markRaw, onMounted, onUnmounted, onUpdated, ref } from "vue";
import showSnackbar from "../../components/func/snackbar";
import TCalendar from "../../components/home/t-calendar.vue";
import TPool from "../../components/home/t-pool.vue";
import TPosition from "../../components/home/t-position.vue";
import TUserBadge from "../../components/home/t-userBadge.vue";
import ToLoading from "../../components/overlay/to-loading.vue";
import { useAppStore } from "../../store/modules/app";
import { useHomeStore } from "../../store/modules/home";
import TGLogger from "../../utils/TGLogger";
// store
const appStore = useAppStore();
@@ -62,6 +62,8 @@ function readLoading(): void {
}
onMounted(async () => {
const items = showHome.value.join("、");
await TGLogger.Info(`[Home][onMounted] 打开首页,当前显示:${items}`);
loadingTitle.value = "正在加载首页";
const isProdEnv = import.meta.env.MODE === "production";
// 获取当前环境
@@ -85,7 +87,7 @@ onMounted(async () => {
timer.value = setInterval(readLoading, 100);
});
function submitHome(): void {
async function submitHome(): Promise<void> {
// 获取已选
const show = showHome.value;
if (show.length < 1) {
@@ -100,6 +102,7 @@ function submitHome(): void {
color: "success",
text: "设置成功!",
});
await TGLogger.Info("[Home][submitHome] 首页设置成功,当前显示:" + show.join("、"));
setTimeout(() => {
window.location.reload();
}, 1000);
@@ -107,7 +110,11 @@ function submitHome(): void {
// 监听定时器
onUpdated(() => {
if (!loading.value) clearInterval(timer.value);
if (!loading.value && timer.value !== null) {
TGLogger.Info("[Home][onMounted] 首页加载完成");
clearInterval(timer.value);
timer.value = null;
}
});
onUnmounted(() => {

View File

@@ -97,6 +97,7 @@ import ToChannel from "../../components/overlay/to-channel.vue";
import ToLoading from "../../components/overlay/to-loading.vue";
import TpAvatar from "../../components/post/tp-avatar.vue";
import Mys from "../../plugins/Mys";
import TGLogger from "../../utils/TGLogger";
import { createPost } from "../../utils/TGWindow";
// 类型定义
@@ -158,6 +159,7 @@ const rawData = ref<RawData>({
});
onMounted(async () => {
await TGLogger.Info(`[News][${gid}][onMounted] 打开咨讯页面`);
tab.value = "notice";
await firstLoad("notice");
});
@@ -176,9 +178,11 @@ async function firstLoad(key: NewsKey): Promise<void> {
await nextTick(() => {
loading.value = false;
});
await TGLogger.Info(`[News][${gid}][firstLoad] 获取${rawData.value[key].name}数据成功`);
}
async function switchAnno(): Promise<void> {
await TGLogger.Info(`[News][${gid}][switchAnno] 切换公告`);
await router.push("/announcements");
}

View File

@@ -98,6 +98,7 @@ import ToLoading from "../../components/overlay/to-loading.vue";
import TpAvatar from "../../components/post/tp-avatar.vue";
import Mys from "../../plugins/Mys";
import TGClient from "../../utils/TGClient";
import TGLogger from "../../utils/TGLogger";
import { createPost } from "../../utils/TGWindow";
const loading = ref<boolean>(true);
@@ -201,6 +202,9 @@ const nav = ref<TGApp.BBS.Navigator.Navigator[]>([]);
const search = ref<string>();
onMounted(async () => {
await TGLogger.Info(
`[Posts][${curGameLabel.value}][onMounted][${curForumLabel.value}] 打开帖子列表`,
);
loading.value = true;
await freshNavData();
await freshPostData();
@@ -287,10 +291,14 @@ function toBBS(link: URL): void {
}
async function freshNavData(): Promise<void> {
await TGLogger.Info(`[Posts][${curGameLabel.value}][freshNavData] 获取网页活动`);
nav.value = await Mys.Posts.nav(curGid.value);
}
async function freshPostData(): Promise<void> {
await TGLogger.Info(
`[Posts][${curGameLabel.value}][freshPostData][${curForumLabel.value}] 刷新帖子列表`,
);
loading.value = true;
loadingTitle.value = `正在加载 ${curGameLabel.value}-${curForumLabel.value}-${curSortLabel.value} 的数据`;
const postsGet = await Mys.Posts.get(curForum.value, curSortType.value);