import { PermissionAction } from '@supabase/shared-types/out/constants' import { useParams } from 'common' import dayjs from 'dayjs' import { Edit3, Eye, EyeOff, Key, Loader, MoreVertical, Trash } from 'lucide-react' import { parseAsString, useQueryState } from 'nuqs' import { useState } from 'react' import { Button, DropdownMenu, DropdownMenuContent, DropdownMenuSeparator, DropdownMenuTrigger, } from 'ui' import { Input } from 'ui-patterns/DataInputs/Input' import { SecretTableColumn } from './Secrets.types' import { DropdownMenuItemTooltip } from '@/components/ui/DropdownMenuItemTooltip' import { useVaultSecretDecryptedValueQuery } from '@/data/vault/vault-secret-decrypted-value-query' import { useAsyncCheckPermissions } from '@/hooks/misc/useCheckPermissions' import { useSelectedProjectQuery } from '@/hooks/misc/useSelectedProject' import type { VaultSecret } from '@/types' interface SecretRowProps { row: VaultSecret col: SecretTableColumn } export const SecretRow = ({ row, col }: SecretRowProps) => { const { ref } = useParams() const { data: project } = useSelectedProjectQuery() const [revealSecret, setRevealSecret] = useState(false) const name = row?.name ?? 'No name provided' const [, setSelectedSecretToEdit] = useQueryState('edit', parseAsString) const [, setSelectedSecretToDelete] = useQueryState('delete', parseAsString) const { can: canManageSecrets } = useAsyncCheckPermissions( PermissionAction.TENANT_SQL_ADMIN_WRITE, 'tables' ) const { data: revealedValue, isFetching } = useVaultSecretDecryptedValueQuery( { projectRef: ref!, connectionString: project?.connectionString, id: row.id, }, { enabled: !!(ref! && row.id) && revealSecret, } ) if (col.id === 'actions') { return (
e.stopPropagation()}>
) } if (col.id === 'secret_value') { return (
e.stopPropagation()}>
) } if (col.id === 'updated_at') { return (

{row.updated_at === row.created_at ? 'Added' : 'Updated'} on{' '} {dayjs(row.updated_at).format('MMM D, YYYY')}

) } if (col.id === 'id') { return (

{row.id}

) } return (

{name}

{row.description !== undefined && row.description !== '' && (

{row.description}

)}
) }