From f5a71728ace20703bdc5163e942e22c300ed1887 Mon Sep 17 00:00:00 2001 From: Denozordec Date: Thu, 1 Oct 2026 14:29:56 +0700 Subject: [PATCH] =?UTF-8?q?fix(ui):=20=D0=B2=D0=BE=D1=81=D1=81=D1=82=D0=B0?= =?UTF-8?q?=D0=BD=D0=B0=D0=B2=D0=BB=D0=B8=D0=B2=D0=B0=D1=82=D1=8C=20=D0=B7?= =?UTF-8?q?=D0=B0=D0=B4=D0=B0=D1=87=D1=83=20=D0=B2=D1=8B=D0=BF=D1=83=D1=81?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=B1=D0=B5=D0=B7=20=D0=BF=D0=BE=D0=B2=D1=82?= =?UTF-8?q?=D0=BE=D1=80=D0=BD=D0=BE=D0=B9=20=D0=BE=D0=BF=D0=B5=D1=80=D0=B0?= =?UTF-8?q?=D1=86=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/(main)/certificates/page.tsx | 120 ++++++++--------------- docs/ux-ui-plan.md | 2 +- docs/ux-ui-progress.md | 11 ++- docs/ux-ui-stage-11a.md | 9 ++ lib/certificate-issue-checkpoint.test.ts | 24 +++++ lib/certificate-issue-checkpoint.ts | 20 ++++ lib/use-certificate-issue.ts | 101 +++++++++++++++++++ tests/e2e/certificates-context.spec.ts | 30 +++++- tests/e2e/certificates-issue.spec.ts | 63 ++++++++++++ tests/e2e/fixtures/certificate-issue.ts | 23 +++++ 10 files changed, 322 insertions(+), 81 deletions(-) create mode 100644 lib/certificate-issue-checkpoint.test.ts create mode 100644 lib/certificate-issue-checkpoint.ts create mode 100644 lib/use-certificate-issue.ts create mode 100644 tests/e2e/certificates-issue.spec.ts create mode 100644 tests/e2e/fixtures/certificate-issue.ts diff --git a/app/(main)/certificates/page.tsx b/app/(main)/certificates/page.tsx index 92019bab..9584934c 100644 --- a/app/(main)/certificates/page.tsx +++ b/app/(main)/certificates/page.tsx @@ -5,7 +5,6 @@ import { useSearchParams } from "next/navigation" import { readCertificatesUrl, patchCertificatesUrl, type CertificateStatusFilter } from "@/lib/certificates-url-state" import { PageHeader } from "@/components/page-header" import { FormField, FormToggle, SectionTitle } from "@/components/form-kit" -import { FileImportDialog } from "@/components/file-import-dialog" import { routerCertificates, servers as mockServers } from "@/lib/data" import type { Server } from "@/lib/data" import type { CertificateDto } from "@mmapp/contracts/certificates" @@ -35,10 +34,7 @@ import { can } from "@/lib/auth" import { useCertificateCatalog } from "@/lib/use-certificate-catalog" import type { CertificateView } from "@/lib/certificate-view" import { toFrontendServer } from "@/entities/server/model/mappers" -import { - createCertificateIssueJob, - getCertificateIssueJob, -} from "@/shared/api/certificates" +import { useCertificateIssue } from "@/lib/use-certificate-issue" import { toast } from "sonner" import { ShieldCheckIcon, @@ -250,6 +246,7 @@ function CertPartIssueForm({ Основные setIssueCertName(e.target.value)} placeholder="router-le" @@ -281,6 +279,7 @@ function CertPartIssueForm({ setIssueCommonName(e.target.value)} placeholder="vpn.example.com" @@ -289,6 +288,7 @@ function CertPartIssueForm({