mirror of
https://github.com/BTMuli/TeyvatGuide.git
synced 2025-12-08 08:48:11 +08:00
93
src-tauri/Cargo.lock
generated
93
src-tauri/Cargo.lock
generated
@@ -14,8 +14,7 @@ dependencies = [
|
||||
"tauri-plugin-sql",
|
||||
"tauri-utils",
|
||||
"url",
|
||||
"webview2-com 0.27.0",
|
||||
"windows 0.51.1",
|
||||
"walkdir",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -3631,7 +3630,7 @@ dependencies = [
|
||||
"unicode-segmentation",
|
||||
"uuid",
|
||||
"windows 0.39.0",
|
||||
"windows-implement 0.39.0",
|
||||
"windows-implement",
|
||||
"x11-dl",
|
||||
]
|
||||
|
||||
@@ -3711,7 +3710,7 @@ dependencies = [
|
||||
"url",
|
||||
"uuid",
|
||||
"webkit2gtk",
|
||||
"webview2-com 0.19.1",
|
||||
"webview2-com",
|
||||
"windows 0.39.0",
|
||||
]
|
||||
|
||||
@@ -3823,7 +3822,7 @@ dependencies = [
|
||||
"thiserror",
|
||||
"url",
|
||||
"uuid",
|
||||
"webview2-com 0.19.1",
|
||||
"webview2-com",
|
||||
"windows 0.39.0",
|
||||
]
|
||||
|
||||
@@ -3842,7 +3841,7 @@ dependencies = [
|
||||
"tauri-utils",
|
||||
"uuid",
|
||||
"webkit2gtk",
|
||||
"webview2-com 0.19.1",
|
||||
"webview2-com",
|
||||
"windows 0.39.0",
|
||||
"wry",
|
||||
]
|
||||
@@ -4488,24 +4487,10 @@ version = "0.19.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b4a769c9f1a64a8734bde70caafac2b96cada12cd4aefa49196b3a386b8b4178"
|
||||
dependencies = [
|
||||
"webview2-com-macros 0.6.0",
|
||||
"webview2-com-sys 0.19.0",
|
||||
"webview2-com-macros",
|
||||
"webview2-com-sys",
|
||||
"windows 0.39.0",
|
||||
"windows-implement 0.39.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "webview2-com"
|
||||
version = "0.27.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cd15556ff1d1d6bc850dbb362762bae86069773dd30177c90d3bfa917080dc73"
|
||||
dependencies = [
|
||||
"webview2-com-macros 0.7.0",
|
||||
"webview2-com-sys 0.27.0",
|
||||
"windows 0.51.1",
|
||||
"windows-core",
|
||||
"windows-implement 0.51.1",
|
||||
"windows-interface",
|
||||
"windows-implement",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -4519,17 +4504,6 @@ dependencies = [
|
||||
"syn 1.0.109",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "webview2-com-macros"
|
||||
version = "0.7.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ac1345798ecd8122468840bcdf1b95e5dc6d2206c5e4b0eafa078d061f59c9bc"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.38",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "webview2-com-sys"
|
||||
version = "0.19.0"
|
||||
@@ -4545,17 +4519,6 @@ dependencies = [
|
||||
"windows-metadata",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "webview2-com-sys"
|
||||
version = "0.27.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3775bb005c3170497ec411b36005708b57ad486bfa3d23864c92f5973858ce8d"
|
||||
dependencies = [
|
||||
"thiserror",
|
||||
"windows 0.51.1",
|
||||
"windows-core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "whoami"
|
||||
version = "1.4.1"
|
||||
@@ -4612,7 +4575,7 @@ version = "0.39.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f1c4bd0a50ac6020f65184721f758dba47bb9fbc2133df715ec74a237b26794a"
|
||||
dependencies = [
|
||||
"windows-implement 0.39.0",
|
||||
"windows-implement",
|
||||
"windows_aarch64_msvc 0.39.0",
|
||||
"windows_i686_gnu 0.39.0",
|
||||
"windows_i686_msvc 0.39.0",
|
||||
@@ -4629,18 +4592,6 @@ dependencies = [
|
||||
"windows-targets 0.48.5",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows"
|
||||
version = "0.51.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ca229916c5ee38c2f2bc1e9d8f04df975b4bd93f9955dc69fabb5d91270045c9"
|
||||
dependencies = [
|
||||
"windows-core",
|
||||
"windows-implement 0.51.1",
|
||||
"windows-interface",
|
||||
"windows-targets 0.48.5",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows-bindgen"
|
||||
version = "0.39.0"
|
||||
@@ -4670,28 +4621,6 @@ dependencies = [
|
||||
"windows-tokens",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows-implement"
|
||||
version = "0.51.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fb2b158efec5af20d8846836622f50a87e6556b9153a42772fa047f773c0e555"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.38",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows-interface"
|
||||
version = "0.51.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0546e63e1ce64c04403d2311fa0e3ab5ae3a367bd524b4a38d8d8d18c70cfa76"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.38",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows-metadata"
|
||||
version = "0.39.0"
|
||||
@@ -4973,9 +4902,9 @@ dependencies = [
|
||||
"url",
|
||||
"webkit2gtk",
|
||||
"webkit2gtk-sys",
|
||||
"webview2-com 0.19.1",
|
||||
"webview2-com",
|
||||
"windows 0.39.0",
|
||||
"windows-implement 0.39.0",
|
||||
"windows-implement",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
||||
@@ -13,13 +13,12 @@ edition = "2021"
|
||||
tauri-build = { version = "1.4", features = [] }
|
||||
|
||||
[dependencies]
|
||||
tauri = { version = "1.4", features = [ "process-relaunch", "window-hide", "os-all", "clipboard-all", "dialog-open", "dialog-save", "fs-create-dir", "fs-remove-dir", "fs-write-file", "fs-remove-file", "fs-read-file", "path-all", "fs-exists", "window-close", "window-set-title", "window-unminimize", "window-show", "window-set-focus", "http-request", "shell-open"] }
|
||||
tauri = { version = "1.4", features = [ "process-exit", "fs-read-dir", "window-hide", "os-all", "clipboard-all", "dialog-open", "dialog-save", "fs-create-dir", "fs-remove-dir", "fs-write-file", "fs-remove-file", "fs-read-file", "path-all", "fs-exists", "window-close", "window-set-title", "window-unminimize", "window-show", "window-set-focus", "http-request", "shell-open"] }
|
||||
serde = { version = "1.0", features = ["derive"] }
|
||||
serde_json = "1.0"
|
||||
webview2-com = "0.27.0"
|
||||
windows = "0.51.1"
|
||||
url = "2.4.1"
|
||||
tauri-utils = "1.5.0"
|
||||
walkdir = "2"
|
||||
|
||||
# sqlite 插件
|
||||
[dependencies.tauri-plugin-sql]
|
||||
|
||||
@@ -68,6 +68,22 @@ async fn create_window(app_handle: tauri::AppHandle, label: String, mut option:
|
||||
window_new.unwrap();
|
||||
}
|
||||
|
||||
// 读取目录大小
|
||||
#[tauri::command]
|
||||
async fn get_dir_size(path: String) -> u64 {
|
||||
dbg!(&path);
|
||||
let walk_dir = walkdir::WalkDir::new(path);
|
||||
let mut size = 0;
|
||||
for entry in walk_dir {
|
||||
let entry = entry.unwrap();
|
||||
let file_type = entry.file_type();
|
||||
if file_type.is_file() {
|
||||
size += entry.metadata().unwrap().len();
|
||||
}
|
||||
}
|
||||
size
|
||||
}
|
||||
|
||||
fn main() {
|
||||
tauri_plugin_deep_link::prepare("teyvatguide");
|
||||
tauri::Builder::default()
|
||||
@@ -95,6 +111,7 @@ fn main() {
|
||||
init_app,
|
||||
execute_js,
|
||||
create_window,
|
||||
get_dir_size,
|
||||
client::create_mhy_client,
|
||||
])
|
||||
.setup(|_app| {
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
"all": false,
|
||||
"exists": true,
|
||||
"readFile": true,
|
||||
"readDir": true,
|
||||
"writeFile": true,
|
||||
"createDir": true,
|
||||
"removeDir": true,
|
||||
@@ -57,7 +58,7 @@
|
||||
},
|
||||
"process": {
|
||||
"all": false,
|
||||
"relaunch": true
|
||||
"exit": true
|
||||
}
|
||||
},
|
||||
"bundle": {
|
||||
|
||||
@@ -146,8 +146,8 @@
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { app, fs, os } from "@tauri-apps/api";
|
||||
import { relaunch } from "@tauri-apps/api/process";
|
||||
import { app, fs, invoke, os } from "@tauri-apps/api";
|
||||
import { exit } from "@tauri-apps/api/process";
|
||||
import { computed, onMounted, ref } from "vue";
|
||||
|
||||
import showConfirm from "../../components/func/confirm";
|
||||
@@ -160,6 +160,7 @@ import { useAppStore } from "../../store/modules/app";
|
||||
import { useHomeStore } from "../../store/modules/home";
|
||||
import { useUserStore } from "../../store/modules/user";
|
||||
import { getBuildTime } from "../../utils/TGBuild";
|
||||
import { bytesToSize, getCacheDir } from "../../utils/toolFunc";
|
||||
import { backupUiafData, restoreUiafData } from "../../utils/UIAF";
|
||||
import TGRequest from "../../web/request/TGRequest";
|
||||
import { backupAbyssData, backupCookieData } from "../../web/utils/backupData";
|
||||
@@ -439,31 +440,54 @@ async function confirmUpdate(title?: string): Promise<void> {
|
||||
|
||||
// 清除用户缓存
|
||||
async function confirmDelCache(): Promise<void> {
|
||||
const CacheDir = await getCacheDir();
|
||||
if (CacheDir === false) {
|
||||
showSnackbar({
|
||||
color: "error",
|
||||
text: "不支持的平台!",
|
||||
});
|
||||
return;
|
||||
}
|
||||
let cacheBSize: number = 0;
|
||||
loadingTitle.value = "正在检测缓存...";
|
||||
loadingSub.value = "耗时较久,请稍作等候";
|
||||
loading.value = true;
|
||||
const timeStart = Date.now();
|
||||
if (Array.isArray(CacheDir)) {
|
||||
for (const dir of CacheDir) {
|
||||
const size: number = await invoke("get_dir_size", { path: dir });
|
||||
cacheBSize += size;
|
||||
}
|
||||
} else {
|
||||
cacheBSize = await invoke("get_dir_size", { path: CacheDir });
|
||||
}
|
||||
let cacheSize = bytesToSize(cacheBSize);
|
||||
loading.value = false;
|
||||
const timeEnd = Date.now();
|
||||
const res = await showConfirm({
|
||||
title: "确认清除缓存吗?",
|
||||
text: "只删除 Webview 缓存,不处理用户数据",
|
||||
text: `当前缓存大小为 ${cacheSize},耗时 ${timeEnd - timeStart} 毫秒`,
|
||||
});
|
||||
if (!res) {
|
||||
if (res === false) {
|
||||
showSnackbar({
|
||||
color: "grey",
|
||||
text: "已取消清除缓存",
|
||||
});
|
||||
return;
|
||||
}
|
||||
await fs.removeDir("EBWebview\\Default\\Cache", {
|
||||
dir: fs.BaseDirectory.AppLocalData,
|
||||
recursive: true,
|
||||
});
|
||||
await fs.removeDir("EBWebview\\Default\\Code Cache", {
|
||||
dir: fs.BaseDirectory.AppLocalData,
|
||||
recursive: true,
|
||||
});
|
||||
if (Array.isArray(CacheDir)) {
|
||||
for (const dir of CacheDir) {
|
||||
await fs.removeDir(dir, { recursive: true });
|
||||
}
|
||||
} else {
|
||||
await fs.removeDir(CacheDir, { recursive: true });
|
||||
}
|
||||
showSnackbar({
|
||||
text: "缓存已清除!即将重启应用...",
|
||||
text: "缓存已清除!请重新启动应用!",
|
||||
});
|
||||
await new Promise(() => {
|
||||
setTimeout(async () => {
|
||||
await relaunch();
|
||||
await exit();
|
||||
}, 1500);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
* @since Beta v0.3.4
|
||||
*/
|
||||
|
||||
import { fs, os, path } from "@tauri-apps/api";
|
||||
import type { FileEntry } from "@tauri-apps/api/fs";
|
||||
import { v4 } from "uuid";
|
||||
|
||||
/**
|
||||
@@ -34,3 +36,62 @@ export function getDeviceID(): string {
|
||||
}
|
||||
return deviceID;
|
||||
}
|
||||
|
||||
/**
|
||||
* @description byte 转成 KB MB GB
|
||||
* @since Beta v0.3.4
|
||||
* @param {number} bytes - 字节数
|
||||
* @returns {string} KB MB GB
|
||||
*/
|
||||
export function bytesToSize(bytes: number): string {
|
||||
if (bytes === 0) return "0 B";
|
||||
const k = 1024;
|
||||
const sizes = ["B", "KB", "MB", "GB"];
|
||||
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
||||
return `${(bytes / Math.pow(k, i)).toFixed(2)} ${sizes[i]}`;
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 获取文件夹大小
|
||||
* @since Beta v0.3.4
|
||||
* @param {FileEntry[]} cacheInfo - 文件夹信息
|
||||
* @param {boolean} isRoot - 是否是根目录
|
||||
* @returns {Promise<number>} 文件夹大小
|
||||
*/
|
||||
export async function getDirSize(cacheInfo: FileEntry[], isRoot: false): Promise<number>;
|
||||
export async function getDirSize(cacheInfo: FileEntry[], isRoot?: true): Promise<string>;
|
||||
export async function getDirSize(
|
||||
cacheInfo: FileEntry[],
|
||||
isRoot?: boolean,
|
||||
): Promise<number | string> {
|
||||
let size = 0;
|
||||
for (const item of cacheInfo) {
|
||||
if (item.children) {
|
||||
const dir = await fs.readDir(item.path);
|
||||
size += await getDirSize(dir, false);
|
||||
} else {
|
||||
const file = await fs.readBinaryFile(item.path);
|
||||
size += file.byteLength;
|
||||
}
|
||||
}
|
||||
if (isRoot === undefined || isRoot) return bytesToSize(size);
|
||||
return size;
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 获取缓存目录
|
||||
* @since Beta v0.3.4
|
||||
* @returns {string|string[]} 缓存目录
|
||||
*/
|
||||
export async function getCacheDir(): Promise<string | string[] | false> {
|
||||
const cacheDir = await path.appCacheDir();
|
||||
const osType = await os.type();
|
||||
if (osType === "Windows_NT") {
|
||||
const cache = `${cacheDir}EBWebview${path.sep}Default${path.sep}Cache`;
|
||||
const codeCache = `${cacheDir}EBWebview${path.sep}Default${path.sep}Code Cache`;
|
||||
return [cache, codeCache];
|
||||
} else if (osType === "Darwin") {
|
||||
return `${cacheDir}WebKit`;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user