import * as Tooltip from '@radix-ui/react-tooltip' import type { PostgresTable } from '@supabase/postgres-meta' import { PermissionAction } from '@supabase/shared-types/out/constants' import { noop } from 'lodash' import { Lock } from 'lucide-react' import Link from 'next/link' import { useRouter } from 'next/router' import { useIsRLSAIAssistantEnabled } from 'components/interfaces/App/FeaturePreview/FeaturePreviewContext' import { useCheckPermissions } from 'hooks/misc/useCheckPermissions' import { Badge, Button, TooltipContent_Shadcn_, TooltipTrigger_Shadcn_, Tooltip_Shadcn_ } from 'ui' interface PolicyTableRowHeaderProps { table: PostgresTable isLocked: boolean onSelectToggleRLS: (table: PostgresTable) => void onSelectCreatePolicy: () => void } const PolicyTableRowHeader = ({ table, isLocked, onSelectToggleRLS = noop, onSelectCreatePolicy, }: PolicyTableRowHeaderProps) => { const router = useRouter() const { ref } = router.query const isAiAssistantEnabled = useIsRLSAIAssistantEnabled() const canToggleRLS = useCheckPermissions(PermissionAction.TENANT_SQL_ADMIN_WRITE, 'tables') const isRealtimeSchema = table.schema === 'realtime' const isRealtimeMessagesTable = isRealtimeSchema && table.name === 'messages' const isTableLocked = isRealtimeSchema ? !isRealtimeMessagesTable : isLocked return (

{table.name}

{isTableLocked && ( Locked )} {table.rls_enabled ? 'Row Level Security enabled' : 'Row Level Security disabled'}
{!isTableLocked && (
{!isRealtimeMessagesTable ? ( {!canToggleRLS && (
You need additional permissions to toggle RLS
)}
) : null} {!isAiAssistantEnabled && ( )}
)}
) } export default PolicyTableRowHeader