VariableView() — supabase Function Reference
Architecture documentation for the VariableView() function in ProjectConfigVariables.tsx from the supabase codebase.
Entity Profile
Dependency Diagram
graph TD f60c05cc_24fd_1ee4_efe7_d25f34a3957d["VariableView()"] 2fa31a08_7861_3ec6_44c7_7e8a65e06a99["isProjectPaused()"] f60c05cc_24fd_1ee4_efe7_d25f34a3957d -->|calls| 2fa31a08_7861_3ec6_44c7_7e8a65e06a99 f9229b8d_d5c8_bdc3_289d_227ff4720ef0["useProjectSettingsQuery()"] f60c05cc_24fd_1ee4_efe7_d25f34a3957d -->|calls| f9229b8d_d5c8_bdc3_289d_227ff4720ef0 e6fbd812_b6cb_0b9d_17c4_039fcd2ca878["useProjectKeysQuery()"] f60c05cc_24fd_1ee4_efe7_d25f34a3957d -->|calls| e6fbd812_b6cb_0b9d_17c4_039fcd2ca878 397134a9_d1d8_0df4_8090_856586d27c9d["useSupavisorConfigQuery()"] f60c05cc_24fd_1ee4_efe7_d25f34a3957d -->|calls| 397134a9_d1d8_0df4_8090_856586d27c9d b91e6349_12cd_2c31_7565_cc3e2917a57e["useCopy()"] f60c05cc_24fd_1ee4_efe7_d25f34a3957d -->|calls| b91e6349_12cd_2c31_7565_cc3e2917a57e style f60c05cc_24fd_1ee4_efe7_d25f34a3957d fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
apps/docs/components/ProjectConfigVariables/ProjectConfigVariables.tsx lines 300–434
function VariableView({ variable, className }: { variable: Variable; className?: string }) {
const isUserLoading = useIsUserLoading()
const isLoggedIn = useIsLoggedIn()
const { selectedProject, selectedBranch } = useSnapshot(projectsStore)
const projectPaused = isProjectPaused(selectedProject)
const hasBranches = selectedProject?.is_branch_enabled ?? false
const ref = hasBranches ? selectedBranch?.project_ref : selectedProject?.ref
const needsApiQuery = variable === 'publishable' || variable === 'anon' || variable === 'url'
const needsSupavisorQuery = variable === 'sessionPooler'
const {
data: apiSettingsData,
isPending: isApiSettingsPending,
isError: isApiSettingsError,
} = useProjectSettingsQuery(
{
projectRef: ref,
},
{ enabled: isLoggedIn && !!ref && !projectPaused && needsApiQuery }
)
const {
data: apiKeysData,
isPending: isApiKeysPending,
isError: isApiKeysError,
} = useProjectKeysQuery(
{
projectRef: ref,
},
{ enabled: isLoggedIn && !!ref && !projectPaused && needsApiQuery }
)
const {
data: supavisorConfig,
isPending: isSupavisorPending,
isError: isSupavisorError,
} = useSupavisorConfigQuery(
{
projectRef: ref,
},
{ enabled: isLoggedIn && !!ref && !projectPaused && needsSupavisorQuery }
)
function isInvalidSupavisorData(supavisorData: SupavisorConfigData) {
return supavisorData.length === 0
}
const stateSummary: VariableDataState = isUserLoading
? 'userLoading'
: !isLoggedIn
? 'loggedOut'
: !ref
? 'loggedIn.noSelectedProject'
: projectPaused
? 'loggedIn.selectedProject.projectPaused'
: (needsApiQuery ? isApiSettingsPending || isApiKeysPending : isSupavisorPending)
? 'loggedIn.selectedProject.dataPending'
: (
needsApiQuery
? isApiSettingsError || isApiKeysError
: isSupavisorError || isInvalidSupavisorData(supavisorConfig!)
)
? 'loggedIn.selectedProject.dataError'
: 'loggedIn.selectedProject.dataSuccess'
let variableValue: string = ''
if (stateSummary === 'loggedIn.selectedProject.dataSuccess') {
switch (variable) {
case 'url':
variableValue = `https://${apiSettingsData?.app_config?.endpoint}`
break
case 'anon':
variableValue =
apiKeysData?.find((key) => key.type === 'legacy' && key.id === 'anon')?.api_key || ''
break
case 'publishable':
variableValue = apiKeysData?.find((key) => key.type === 'publishable')?.api_key || ''
break
case 'sessionPooler':
variableValue = supavisorConfig?.[0]?.connection_string || ''
}
}
const { copied, handleCopy } = useCopy()
return (
<>
<div className={cn('flex items-center gap-2', className)}>
<Input
disabled
type="text"
className="font-mono"
value={
stateSummary === 'userLoading' ||
stateSummary === 'loggedIn.selectedProject.dataPending'
? 'Loading...'
: stateSummary === 'loggedIn.selectedProject.projectPaused'
? 'PROJECT PAUSED'
: stateSummary === 'loggedIn.selectedProject.dataSuccess'
? variableValue
: `YOUR ${prettyFormatVariable[variable].toUpperCase()}`
}
/>
<CopyToClipboard text={variableValue ?? ''}>
<Button
disabled={!variableValue}
variant="ghost"
className="px-0"
onClick={handleCopy}
aria-label="Copy"
>
{copied ? <Check /> : <Copy />}
</Button>
</CopyToClipboard>
</div>
{stateSummary === 'loggedIn.selectedProject.dataError' && (
<p className="text-foreground-muted text-sm mt-2 mb-0 ml-1">
You can also copy your {prettyFormatVariable[variable]} from the{' '}
<Link
className="text-foreground-muted"
href="https://supabase.com/dashboard/project/_/settings/api"
rel="noreferrer noopener"
target="_blank"
>
dashboard
</Link>
.
</p>
)}
</>
)
}
Domain
Subdomains
Calls
Source
Frequently Asked Questions
What does VariableView() do?
VariableView() is a function in the supabase codebase.
What does VariableView() call?
VariableView() calls 5 function(s): isProjectPaused, useCopy, useProjectKeysQuery, useProjectSettingsQuery, useSupavisorConfigQuery.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free