支持 Cookie 数据备份&恢复

This commit is contained in:
BTMuli
2023-05-22 16:09:13 +08:00
parent f6d24614b7
commit 1033aad7f3
3 changed files with 64 additions and 8 deletions

View File

@@ -190,6 +190,8 @@ import { useAchievementsStore } from "../store/modules/achievements";
import { useUserStore } from "../store/modules/user"; import { useUserStore } from "../store/modules/user";
// utils // utils
import { backupUiafData, restoreUiafData } from "../utils/UIAF"; import { backupUiafData, restoreUiafData } from "../utils/UIAF";
import { backupCookieData } from "../web/utils/backupData";
import { restoreCookieData } from "../web/utils/restoreData";
import TGSqlite from "../utils/TGSqlite"; import TGSqlite from "../utils/TGSqlite";
import TGRequest from "../web/request/TGRequest"; import TGRequest from "../web/request/TGRequest";
@@ -367,6 +369,8 @@ async function backupData () {
loading.value = true; loading.value = true;
const achievements = await TGSqlite.getUIAF(); const achievements = await TGSqlite.getUIAF();
await backupUiafData(achievements); await backupUiafData(achievements);
const cookie = await TGSqlite.getCookie();
await backupCookieData(cookie);
loading.value = false; loading.value = false;
snackbarText.value = "数据已备份!"; snackbarText.value = "数据已备份!";
snackbarColor.value = "success"; snackbarColor.value = "success";
@@ -376,17 +380,25 @@ async function backupData () {
async function restoreData () { async function restoreData () {
loadingTitle.value = "正在恢复数据..."; loadingTitle.value = "正在恢复数据...";
loading.value = true; loading.value = true;
const res = await restoreUiafData(); const fail = [];
loading.value = false; let res = await restoreUiafData();
if (res) { if (!res) {
fail.push("成就数据");
}
res = await restoreCookieData();
if (!res) {
fail.push("Cookie");
}
if (fail.length > 0) {
snackbarText.value = `${fail.join("、")} 恢复失败!`;
snackbarColor.value = "error";
} else {
snackbarText.value = "数据已恢复!"; snackbarText.value = "数据已恢复!";
snackbarColor.value = "success"; snackbarColor.value = "success";
snackbar.value = true;
} else {
snackbarText.value = "未检测到备份数据!";
snackbarColor.value = "error";
snackbar.value = true;
} }
const cookie = await TGSqlite.getCookie();
userStore.initCookie(cookie);
loading.value = false;
} }
async function delTempData () { async function delTempData () {

View File

@@ -0,0 +1,20 @@
/**
* @file web utils backupData.ts
* @description 数据备份
* @author BTMuli<bt-muli@outlook.com>
* @since Alpha v0.2.0
*/
// tauri
import { fs, path } from "@tauri-apps/api";
/**
* @description 备份 Cookie 数据
* @since Alpha v0.2.0
* @param {Record<string, string>} cookie cookie
* @returns {Promise<void>}
*/
export async function backupCookieData (cookie: Record<string, string>): Promise<void> {
const savePath = `${await path.appLocalDataDir()}\\userData\\cookie.json`;
await fs.writeTextFile(savePath, JSON.stringify(cookie, null, 2));
}

View File

@@ -0,0 +1,24 @@
/**
* @file web utils restoreData.ts
* @description 数据恢复
* @author BTMuli<bt-muli@outlook.com>
* @since Alpha v0.2.0
*/
// tauri
import { fs, path } from "@tauri-apps/api";
// utils
import TGSqlite from "../../utils/TGSqlite";
/**
* @description 恢复 Cookie 数据
* @since Alpha v0.2.0
* @returns {Promise<boolean>}
*/
export async function restoreCookieData (): Promise<boolean> {
const cookiePath = `${await path.appLocalDataDir()}\\userData\\cookie.json`;
if (!await fs.exists(cookiePath)) return false;
const cookieData = await fs.readTextFile(cookiePath);
await TGSqlite.saveAppData("cookie", JSON.stringify(JSON.parse(cookieData)));
return true;
}