import { useState } from "react" import { Link } from "react-router-dom" import { Inbox, Loader2, Upload } from "lucide-react" import { Button } from "@/components/ui/button" import { StatusBadge } from "@/components/StatusBadge" import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select" import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "@/components/ui/table" import { useAccounts, useDomains, useImportZones, useSetDomainTemplate, useTemplates, } from "@/hooks/useApi" const NO_TEMPLATE = "__none__" export function DomainsPage() { const domains = useDomains() const accounts = useAccounts() const templates = useTemplates() const importZones = useImportZones() const setTemplate = useSetDomainTemplate() const accountList = accounts.data ?? [] const templateList = templates.data ?? [] const domainList = domains.data ?? [] const [importAccountId, setImportAccountId] = useState(null) const selectedImportAccount = importAccountId ?? accountList[0]?.id ?? null const accountItems = accountList.map((a) => ({ value: a.id, label: `${a.provider} · ${a.comment}`, })) function accountLabel(id: string) { const acc = accountList.find((a) => a.id === id) return acc ? `${acc.provider} · ${acc.comment}` : id } function onImport() { if (!selectedImportAccount) return importZones.mutate(selectedImportAccount) } function onTemplateChange(domainId: string, value: unknown) { const templateId = value === NO_TEMPLATE ? null : (value as string) setTemplate.mutate({ id: domainId, templateId }) } return (
zones

Domains

Учётная запись
{importZones.isError && ( {importZones.error.message} )}
{setTemplate.isError && ( {setTemplate.error?.message} )} {domainList.length === 0 ? (
Доменов пока нет — импортируйте зоны из учётной записи.
) : ( Zone Учётка Шаблон Статус Действия {domainList.map((d) => { const templateItems = [ { value: NO_TEMPLATE, label: "Без шаблона" }, ...templateList.map((t) => ({ value: t.id, label: t.name })), ] return ( {d.zoneName} {accountLabel(d.providerAccountId)}
) })}
)}
) }