fix(ui): различать ошибки и пустую историю WireGuard

This commit is contained in:
Denozordec committed 2026-09-29 13:42:00 +07:00
1 parent 1d1de12c58
commit d0f5649725
7 files changed
+116 -14

No files matched your search

+16
View File
@@ -1,3 +1,4 @@
import { z } from "zod"
import { wgIfaceDtoSchema, wgImportResponseSchema, wgExportResponseSchema } from "@mmapp/contracts/wireguard"
import type {
WgCreateInterface,
@@ -126,3 +127,18 @@ export async function exportWireGuard(
}
return parsed.data
}
const wireguardRevisionsSchema = z.object({ revisions: z.array(z.object({
id: z.string().min(1), serverId: z.string().min(1), section: z.literal("wireguard"),
source: z.enum(["apply", "rollback", "observed", "copy"]), fingerprint: z.string(),
createdAt: z.string().refine(value => Number.isFinite(Date.parse(value))),
note: z.string().nullable(), itemCount: z.number().int().nonnegative(),
})) })
export async function listWireGuardRevisions(baseUrl: string, serverId: string) {
const result = wireguardRevisionsSchema.safeParse(await requestJson<unknown>(baseUrl, "/api/wireguard/revisions?serverId=" + encodeURIComponent(serverId)))
if (!result.success || result.data.revisions.some(revision => revision.serverId !== serverId)) {
throw new Error("Некорректный ответ истории WireGuard")
}
return result.data.revisions
}