import { ExternalLink, Eye, EyeOff, Loader } from 'lucide-react' import { useState } from 'react' import { useParams } from 'common' import { useVaultSecretDecryptedValueQuery } from 'data/vault/vault-secret-decrypted-value-query' import { useSelectedProjectQuery } from 'hooks/misc/useSelectedProject' import { Button, Input, Tooltip, TooltipContent, TooltipTrigger } from 'ui' export const DecryptedReadOnlyInput = ({ value, secureEntry, descriptionText, label, }: { value?: string secureEntry: boolean descriptionText: string label: string }) => { const { ref } = useParams() const { data: project } = useSelectedProjectQuery() const [showHidden, setShowHidden] = useState(false) const { data: decryptedValue, isLoading: isDecryptedValueLoading } = useVaultSecretDecryptedValueQuery( { projectRef: project?.ref, connectionString: project?.connectionString, id: value ?? '', }, { enabled: secureEntry && showHidden } ) const isLoading = isDecryptedValueLoading && showHidden const renderedValue = secureEntry ? isLoading ? 'Fetching value from Vault...' : showHidden ? decryptedValue : value : value return ( {label} View parameter in Vault } value={renderedValue} type={secureEntry ? (isLoading ? 'text' : showHidden ? 'text' : 'password') : 'text'} descriptionText={descriptionText} layout="horizontal" actions={ secureEntry ? ( isLoading ? (
) : (
) ) : null } /> ) }