"use client"; import { useEnvContext } from "@app/hooks/useEnvContext"; import { toast } from "@app/hooks/useToast"; import { createApiClient, formatAxiosError } from "@app/lib/api"; import type { CreateOrEditLabelResponse } from "@server/routers/labels/types"; import type { AxiosResponse } from "axios"; import { useTranslations } from "next-intl"; import { useTransition } from "react"; import { Credenza, CredenzaBody, CredenzaClose, CredenzaContent, CredenzaDescription, CredenzaFooter, CredenzaHeader, CredenzaTitle } from "./Credenza"; import { OrgLabelForm } from "./OrgLabelForm"; import { Button } from "./ui/button"; export type EditOrgLabelDialogProps = { open: boolean; setOpen: (val: boolean) => void; orgId: string; onSuccess?: () => void; label: { name: string; color: string; labelId: number; }; }; export function EditOrgLabelDialog({ open, setOpen, orgId, onSuccess, label }: EditOrgLabelDialogProps) { const t = useTranslations(); const api = createApiClient(useEnvContext()); const [isSubmitting, startTransition] = useTransition(); async function editOrgLabel(data: { name: string; color: string }) { try { const res = await api.patch< AxiosResponse >(`/org/${orgId}/label/${label.labelId}`, data); if (res.status === 200) { setOpen(false); onSuccess?.(); toast({ title: t("success"), description: t("labelEditSuccessMessage") }); } } catch (e) { toast({ title: t("error"), description: formatAxiosError(e, t("errorOccurred")), variant: "destructive" }); } } return ( {t("editLabelDialogTitle")} {t("editLabelDialogDescription")} { startTransition(async () => editOrgLabel(data)); }} /> ); }