From 214d1d109017c3131af74906fc04428765b92fa9 Mon Sep 17 00:00:00 2001 From: BTMuli Date: Sun, 23 Apr 2023 21:25:52 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat(backup):=20=E6=88=90=E5=B0=B1?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=A4=87=E4=BB=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.vue | 34 ++++++----- src/pages/Achievements.vue | 37 +++++------- src/pages/Config.vue | 65 ++++++++++++++------- src/store/modules/app.ts | 17 +----- src/utils/UIAF.ts | 112 ++++++++++++++++++++++++++++++++++++- 5 files changed, 193 insertions(+), 72 deletions(-) diff --git a/src/App.vue b/src/App.vue index 811a7a42..135c1230 100644 --- a/src/App.vue +++ b/src/App.vue @@ -33,11 +33,13 @@ import TBackTop from "./components/t-backTop.vue"; import { fs, window, app, event } from "@tauri-apps/api"; // store import { useAppStore } from "./store/modules/app"; +import { useAchievementsStore } from "./store/modules/achievements"; // utils import { InitTGData, DeleteTGData, WriteTGData } from "./utils/TGIndex"; import { getBuildTime } from "./utils/TGBuild"; // data -import { TGAppDataList, TGGetDataList } from "./data"; +import { TGGetDataList } from "./data"; +import { restoreUiafData } from "./utils/UIAF"; const appStore = useAppStore(); const isMain = ref(true as boolean); @@ -84,27 +86,19 @@ async function checkLoad () { } DeleteTGData(); await createDataDir(); - await writeData(); await writeIndex(); + await writeData(); appStore.loading = true; console.info("数据加载完成!"); } // 创建数据文件夹 async function createDataDir () { console.info("开始创建数据文件夹..."); - await fs.createDir("appData", { dir: fs.BaseDirectory.AppLocalData, recursive: true }); - await fs.createDir("userData", { dir: fs.BaseDirectory.AppLocalData, recursive: true }); - await fs.createDir("tempData", { dir: fs.BaseDirectory.AppLocalData, recursive: true }); + // 如果不存在则创建 + if (!await fs.exists("userData", { dir: fs.BaseDirectory.AppLocalData })) { await fs.createDir("userData", { dir: fs.BaseDirectory.AppLocalData, recursive: true }); } + if (!await fs.exists("tempData", { dir: fs.BaseDirectory.AppLocalData })) { await fs.createDir("tempData", { dir: fs.BaseDirectory.AppLocalData, recursive: true }); } console.info("数据文件夹创建完成!"); } -// 将数据写入文件夹 -async function writeData () { - console.info("开始写入数据..."); - TGAppDataList.map(async (item) => { - await fs.writeFile(`${appStore.dataPath.appDataDir}\\${item.name}`, JSON.stringify(item.data)); - }); - console.info("数据写入完成!"); -} // 写入 IndexedDB async function writeIndex () { console.info("开始写入 IndexedDB..."); @@ -114,6 +108,20 @@ async function writeIndex () { }); console.info("IndexedDB 写入完成!"); } +// 恢复数据 +async function writeData () { + console.info("开始恢复数据..."); + const res = await restoreUiafData(); + if (res !== false) { + const { total, completed } = res; + console.info("开始恢复成就数据..."); + const achievementsStore = useAchievementsStore(); + achievementsStore.flushData(total, completed); + console.info("成就数据恢复完成!"); + } else { + console.info("未找到成就数据!"); + } +}