fix(ui): сохранять контекст каталога и выбирать клиента IPsec

This commit is contained in:
Denozordec committed 2026-10-01 10:01:09 +07:00
1 parent 4896d8ef6f
commit ecd72d9750
5 files changed
+113 -40

No files matched your search

+4 -1
View File
@@ -18,7 +18,8 @@ const checkedUserSchema = appUserReadSchema.refine(user => user.bindings.every(b
const usersListPayload = z.object({ users: z.array(checkedUserSchema).refine(rows => new Set(rows.map(row => row.id)).size === rows.length, "Повторяющиеся пользователи в ответе API") })
const userPayload = z.object({ user: checkedUserSchema })
const bindingPayload = z.object({ binding: userBindingSchema })
const catalogPayload = z.object({ interfaces: z.array(catalogInterfaceSchema) })
const checkedCatalogInterface = catalogInterfaceSchema.refine(iface => iface.name.trim().length > 0 && (!(iface.type === "wg" || iface.type === "ipsec") || iface.peers !== undefined || !!iface.peersError) && (!iface.peers || iface.peers.every(peer => peer.publicKey.trim().length > 0) && new Set(iface.peers.map(peer => peer.publicKey)).size === iface.peers.length), "Неполный или неоднозначный каталог интерфейсов")
const catalogPayload = z.object({ interfaces: z.array(checkedCatalogInterface).refine(rows => new Set(rows.map(row => row.name)).size === rows.length, "Повторяющиеся интерфейсы") })
export function toFrontendBinding(b: UserBinding): InterfaceBinding {
return {
@@ -132,10 +133,12 @@ export async function deleteUserBinding(baseUrl: string, userId: string, binding
export async function listInterfaceCatalog(
baseUrl: string,
serverId: string,
init?: RequestInit,
): Promise<CatalogIface[]> {
const payload = await requestJson<unknown>(
baseUrl,
`/api/users/interface-catalog?serverId=${encodeURIComponent(serverId)}`,
init,
)
return catalogPayload.parse(payload).interfaces as CatalogInterface[]
}