feat: 新增 Frp 下载管理功能,支持版本拉取、下载、导入和删除
新增 Frp 下载相关的后端命令、前端组件和类型定义,包括: - 后端:添加 frp 模块,实现版本拉取、下载、导入、删除逻辑,新增数据库表 - 前端:新增 FrpCard 组件、下载页面,集成版本选择和下载进度展示 - 国际化:新增中英双语的 Frp 相关文案 - 依赖:添加 reqwest、futures-util、tokio 等网络和异步处理依赖
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
import { invoke } from "@tauri-apps/api/core"
|
||||
import type { ApiResponse } from "@/types/api"
|
||||
import type { FrpDownload, FrpDownloadPayload, FrpRelease } from "@/types/frp"
|
||||
|
||||
/**
|
||||
* 调用后端命令并统一解包 ApiResponse。
|
||||
*
|
||||
* 后端所有 Frp 下载相关命令均返回 `ApiResponse<T>`,业务失败时
|
||||
* `success === false`,此处统一抛出异常,交由调用方提示。
|
||||
*/
|
||||
async function call<T>(command: string, args?: Record<string, unknown>): Promise<T> {
|
||||
const res = await invoke<ApiResponse<T>>(command, args)
|
||||
if (!res?.success) {
|
||||
throw new Error(res?.msg || "操作失败")
|
||||
}
|
||||
return res.data as T
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取 Frp 版本列表(返回所有架构,前端按开关过滤)
|
||||
*/
|
||||
export function getFrpReleases() {
|
||||
return call<FrpRelease[]>("get_frp_releases")
|
||||
}
|
||||
|
||||
/** 下载并解压指定 Frp 发行包 */
|
||||
export function downloadFrp(payload: FrpDownloadPayload) {
|
||||
return call<FrpDownload>("download_frp", { payload })
|
||||
}
|
||||
|
||||
/** 获取本机已下载 / 已导入的 Frp 版本列表(仪表盘选择 frpc 版本用) */
|
||||
export function getFrpDownloads() {
|
||||
return call<FrpDownload[]>("get_frp_downloads")
|
||||
}
|
||||
|
||||
/** 删除已下载 / 已导入的版本 */
|
||||
export function deleteFrp(id: number) {
|
||||
return call<null>("delete_frp", { id })
|
||||
}
|
||||
|
||||
/** 导入本地已下载的 frpc / frps(返回导入后的记录) */
|
||||
export function importFrp() {
|
||||
return call<FrpDownload[]>("import_frp")
|
||||
}
|
||||
Reference in New Issue
Block a user