import { useMemo } from "react"; import { faEdit } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { format } from "date-fns"; import { ProjectPermissionCan } from "@app/components/permissions"; import { GenericFieldLabel, SecretSyncStatusBadge } from "@app/components/secret-syncs"; import { IconButton } from "@app/components/v2"; import { ProjectPermissionSub } from "@app/context"; import { ProjectPermissionSecretSyncActions } from "@app/context/ProjectPermissionContext/types"; import { SecretSyncStatus, TSecretSync } from "@app/hooks/api/secretSyncs"; type Props = { secretSync: TSecretSync; onEditDetails: VoidFunction; }; export const SecretSyncDetailsSection = ({ secretSync, onEditDetails }: Props) => { const { syncStatus, lastSyncMessage, lastSyncedAt, name, description } = secretSync; const failureMessage = useMemo(() => { if (syncStatus === SecretSyncStatus.Failed) { if (lastSyncMessage) try { return JSON.stringify(JSON.parse(lastSyncMessage), null, 2); } catch { return lastSyncMessage; } return "An Unknown Error Occurred."; } return null; }, [syncStatus, lastSyncMessage]); return (

Details

{(isAllowed) => ( )}
{name} {description} {syncStatus && ( )} {lastSyncedAt && ( {format(new Date(lastSyncedAt), "yyyy-MM-dd, hh:mm aaa")} )} {syncStatus === SecretSyncStatus.Failed && failureMessage && (

{failureMessage}

)}
); };