"use client" import { KeyRoundIcon, Loader2 } from "lucide-react" import { type ComponentProps, useContext, useState } from "react" import { useLang } from "../../../hooks/use-lang" import { AuthUIContext } from "../../../lib/auth-ui-provider" import { cn, getLocalizedError } from "../../../lib/utils" import type { AuthLocalization } from "../../../localization/auth-localization" import type { ApiKey } from "../../../types/api-key" import type { Refetch } from "../../../types/refetch" import { Button } from "../../ui/button" import { Card } from "../../ui/card" import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle } from "../../ui/dialog" import type { SettingsCardClassNames } from "../shared/settings-card" interface ApiKeyDeleteDialogProps extends ComponentProps { classNames?: SettingsCardClassNames apiKey: ApiKey localization?: AuthLocalization refetch?: Refetch } export function ApiKeyDeleteDialog({ classNames, apiKey, localization, refetch, onOpenChange, ...props }: ApiKeyDeleteDialogProps) { const { localization: contextLocalization, mutators: { deleteApiKey }, toast, localizeErrors } = useContext(AuthUIContext) localization = { ...contextLocalization, ...localization } const { lang } = useLang() const [isLoading, setIsLoading] = useState(false) const handleDelete = async () => { setIsLoading(true) try { await deleteApiKey({ keyId: apiKey.id }) await refetch?.() onOpenChange?.(false) } catch (error) { toast({ variant: "error", message: getLocalizedError({ error, localization, localizeErrors }) }) } setIsLoading(false) } // Format expiration date or show "Never expires" const formatExpiration = () => { if (!apiKey.expiresAt) return localization.NEVER_EXPIRES const expiresDate = new Date(apiKey.expiresAt) return `${localization.EXPIRES} ${expiresDate.toLocaleDateString( lang ?? "en", { month: "short", day: "numeric", year: "numeric" } )}` } return ( e.preventDefault()} className={classNames?.dialog?.content} > {localization.DELETE} {localization.API_KEY} {localization.DELETE_API_KEY_CONFIRM}
{apiKey.name} {apiKey.start} {"******"}
{formatExpiration()}
) }