RealtimePolicies() — supabase Function Reference
Architecture documentation for the RealtimePolicies() function in Policies.tsx from the supabase codebase.
Entity Profile
Relationship Graph
Source Code
apps/studio/components/interfaces/Realtime/Policies.tsx lines 14–102
export const RealtimePolicies = () => {
const { data: project } = useSelectedProjectQuery()
const { data: postgrestConfig } = useProjectPostgrestConfigQuery({ projectRef: project?.ref })
const [showPolicyEditor, setShowPolicyEditor] = useState(false)
const [selectedPolicyToEdit, setSelectedPolicyToEdit] = useState<PostgresPolicy>()
const {
data: tables,
isPending: isLoading,
isSuccess,
isError,
error,
} = useTablesQuery({
projectRef: project?.ref,
connectionString: project?.connectionString,
schema: 'realtime',
})
const filteredTables = useMemo(
() => (tables ?? []).filter((table) => table.name === 'messages'),
[tables]
)
const visibleTableIds = useMemo(
() => new Set(filteredTables.map((table) => table.id)),
[filteredTables]
)
const {
data: policies,
isPending: isLoadingPolicies,
isError: isPoliciesError,
error: policiesError,
} = useDatabasePoliciesQuery({
projectRef: project?.ref,
connectionString: project?.connectionString,
})
const exposedSchemas = useMemo(() => {
const dbSchema = postgrestConfig?.db_schema
if (!dbSchema) return []
return dbSchema
.split(',')
.map((schema) => schema.trim())
.filter((schema) => schema.length > 0)
}, [postgrestConfig?.db_schema])
return (
<>
{isLoading && <GenericSkeletonLoader />}
{isError && <AlertError error={error} subject="Failed to retrieve tables" />}
{isSuccess && (
<PoliciesDataProvider
policies={policies ?? []}
isPoliciesLoading={isLoadingPolicies}
isPoliciesError={isPoliciesError}
policiesError={policiesError ?? undefined}
exposedSchemas={exposedSchemas}
>
<Policies
schema="realtime"
tables={filteredTables}
hasTables
isLocked={false}
visibleTableIds={visibleTableIds}
onSelectCreatePolicy={(_tableName) => {
setSelectedPolicyToEdit(undefined)
setShowPolicyEditor(true)
}}
onSelectEditPolicy={(policy) => {
setSelectedPolicyToEdit(policy)
setShowPolicyEditor(true)
}}
/>
</PoliciesDataProvider>
)}
<PolicyEditorPanel
visible={showPolicyEditor}
searchString="messages"
schema="realtime"
selectedPolicy={selectedPolicyToEdit}
onSelectCancel={() => setShowPolicyEditor(false)}
authContext="realtime"
/>
</>
)
}
Domain
Subdomains
Source
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free