Home / Function/ useGettingStartedProgress() — supabase Function Reference

useGettingStartedProgress() — supabase Function Reference

Architecture documentation for the useGettingStartedProgress() function in useGettingStartedProgress.ts from the supabase codebase.

Entity Profile

Dependency Diagram

graph TD
  2b942197_cc1f_9040_908f_497d02691d6c["useGettingStartedProgress()"]
  4a2bd464_5f31_b7aa_976f_6a2afeca5117["GettingStartedSection()"]
  4a2bd464_5f31_b7aa_976f_6a2afeca5117 -->|calls| 2b942197_cc1f_9040_908f_497d02691d6c
  style 2b942197_cc1f_9040_908f_497d02691d6c fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

apps/studio/components/interfaces/HomeNew/GettingStarted/useGettingStartedProgress.ts lines 29–142

export const useGettingStartedProgress = (): GettingStartedStatuses => {
  const { data: project } = useSelectedProjectQuery()
  const { data: organization } = useSelectedOrganizationQuery()

  const projectRef = project?.ref
  const connectionString = project?.connectionString
  const isProjectActive = project?.status === PROJECT_STATUS.ACTIVE_HEALTHY

  const { data: tablesData } = useTablesQuery(
    { projectRef, connectionString, schema: 'public' },
    { enabled: !!projectRef && isProjectActive }
  )

  const { data: storageTablesData } = useTablesQuery(
    { projectRef, connectionString, schema: 'storage' },
    { enabled: !!projectRef && isProjectActive }
  )

  const { data: policiesData } = useDatabasePoliciesQuery(
    { projectRef, connectionString, schema: 'public' },
    { enabled: !!projectRef && !!connectionString && isProjectActive }
  )

  const { data: authConfig } = useAuthConfigQuery(
    { projectRef },
    { enabled: !!projectRef && isProjectActive }
  )

  const { data: usersCountData } = useUsersCountQuery(
    { projectRef, connectionString },
    { enabled: !!projectRef && !!connectionString && isProjectActive }
  )

  const { data: edgeFunctionsData } = useEdgeFunctionsQuery(
    { projectRef },
    { enabled: !!projectRef && isProjectActive }
  )

  const { data: reportsData } = useContentInfiniteQuery(
    { projectRef, type: 'report', limit: 1 },
    { enabled: !!projectRef && isProjectActive }
  )

  const { data: migrationsData } = useMigrationsQuery(
    { projectRef, connectionString },
    { enabled: !!projectRef && !!connectionString && isProjectActive }
  )

  const { data: usageStatsData } = useProjectLogStatsQuery(
    { projectRef, interval: '1day' },
    { enabled: !!projectRef && isProjectActive }
  )

  const { data: githubConnections } = useGitHubConnectionsQuery(
    { organizationId: organization?.id },
    { enabled: !!projectRef && !!organization?.id }
  )

  const statuses = useMemo<GettingStartedStatuses>(() => {
    const hasTables = (tablesData?.length ?? 0) > 0
    const hasCliSetup = (migrationsData?.length ?? 0) > 0
    const hasSampleData = (tablesData ?? []).some(
      (table) => Number(table?.live_rows_estimate ?? 0) > 0
    )
    const hasRlsPolicies = (policiesData?.length ?? 0) > 0
    const allowSignupsEnabled = authConfig ? !authConfig.DISABLE_SIGNUP : false
    const emailProviderEnabled = !!authConfig?.EXTERNAL_EMAIL_ENABLED
    const hasFirstUser = !!usersCountData && !usersCountData.is_estimate && usersCountData.count > 0
    const hasStorageObjects = (storageTablesData ?? []).some(
      (table) => table.name === 'objects' && Number(table?.live_rows_estimate ?? 0) > 0
    )
    const hasEdgeFunctions = (edgeFunctionsData?.length ?? 0) > 0
    const hasReports = (reportsData?.pages?.[0]?.content?.length ?? 0) > 0
    const hasGitHubConnection =
      githubConnections?.some((connection) => connection.project.ref === projectRef) ?? false
    const hasAppConnected =
      usageStatsData?.result?.some((row) => {
        const totals = [
          row.total_auth_requests,
          row.total_storage_requests,
          row.total_rest_requests,
          row.total_realtime_requests,
        ]
        return totals.some((value) => (value ?? 0) > 0)
      }) ?? false

    return {
      hasTables,
      hasCliSetup,
      hasSampleData,
      hasRlsPolicies,
      hasAppConnected,
      hasFirstUser,
      hasStorageObjects,
      hasEdgeFunctions,
      hasReports,
      hasGitHubConnection,
    }
  }, [
    authConfig,
    edgeFunctionsData,
    githubConnections,
    migrationsData,
    policiesData,
    reportsData,
    storageTablesData,
    tablesData,
    usageStatsData,
    usersCountData,
    projectRef,
  ])

  return statuses
}

Subdomains

Frequently Asked Questions

What does useGettingStartedProgress() do?
useGettingStartedProgress() is a function in the supabase codebase.
What calls useGettingStartedProgress()?
useGettingStartedProgress() is called by 1 function(s): GettingStartedSection.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free