import React, { useState } from "react"; import { useTranslation, Trans } from "react-i18next"; import { I18nKey } from "#/i18n/declaration"; import { BrandButton } from "#/components/features/settings/brand-button"; import { LoadingSpinner } from "#/components/shared/loading-spinner"; import { ApiKey, CreateApiKeyResponse } from "#/api/api-keys"; import { displayErrorToast } from "#/utils/custom-toast-handlers"; import { CreateApiKeyModal } from "./create-api-key-modal"; import { DeleteApiKeyModal } from "./delete-api-key-modal"; import { NewApiKeyModal } from "./new-api-key-modal"; import { useApiKeys } from "#/hooks/query/use-api-keys"; export function ApiKeysManager() { const { t } = useTranslation(); const { data: apiKeys = [], isLoading, error } = useApiKeys(); const [createModalOpen, setCreateModalOpen] = useState(false); const [deleteModalOpen, setDeleteModalOpen] = useState(false); const [keyToDelete, setKeyToDelete] = useState(null); const [newlyCreatedKey, setNewlyCreatedKey] = useState(null); const [showNewKeyModal, setShowNewKeyModal] = useState(false); // Display error toast if the query fails if (error) { displayErrorToast(t(I18nKey.ERROR$GENERIC)); } const handleKeyCreated = (newKey: CreateApiKeyResponse) => { setNewlyCreatedKey(newKey); setCreateModalOpen(false); setShowNewKeyModal(true); }; const handleCloseCreateModal = () => { setCreateModalOpen(false); }; const handleCloseDeleteModal = () => { setDeleteModalOpen(false); setKeyToDelete(null); }; const handleCloseNewKeyModal = () => { setShowNewKeyModal(false); setNewlyCreatedKey(null); }; const formatDate = (dateString: string | null) => { if (!dateString) return "Never"; return new Date(dateString).toLocaleString(); }; return ( <>
setCreateModalOpen(true)} > {t(I18nKey.SETTINGS$CREATE_API_KEY)}

API documentation ), }} />

{isLoading && (
)} {!isLoading && Array.isArray(apiKeys) && apiKeys.length > 0 && (
{apiKeys.map((key) => ( ))}
{t(I18nKey.SETTINGS$NAME)} {t(I18nKey.SETTINGS$CREATED_AT)} {t(I18nKey.SETTINGS$LAST_USED)} {t(I18nKey.SETTINGS$ACTIONS)}
{key.name} {formatDate(key.created_at)} {formatDate(key.last_used_at)}
)}
{/* Create API Key Modal */} {/* Delete API Key Modal */} {/* Show New API Key Modal */} ); }