-
-
{prettyFormatVariable[variable]}
- {(parentStateSummary === 'userLoading' ||
- parentStateSummary === 'loggedIn.dataPending' ||
- parentStateSummary === 'loggedIn.hasData') && (
-
-
-
-
-
-
- )}
-
-
- {parentStateSummary === 'loggedOut' && (
-
- There was a problem getting your {prettyFormatVariable[variable]}. Are you{' '}
-
- logged in
-
- ?
-
- )}
- {(parentStateSummary === 'loggedIn.hasNoData' ||
- parentStateSummary === 'loggedIn.dataError' ||
- apiStateSummary === 'loggedIn.hasData.apiDataError') && (
- <>
-
- There was a problem getting your {prettyFormatVariable[variable]}.{' '}
- {parentStateSummary === 'loggedIn.hasNoData' && (
- <>
- Do you have{' '}
-
- any projects
-
- ?
- >
- )}
-
- {(parentStateSummary === 'loggedIn.dataError' ||
- apiStateSummary === 'loggedIn.hasData.apiDataError') && (
-
- You can also try looking up the value in the{' '}
-
- dashboard
-
- .
-
- )}
- >
- )}
-
- )
-}
-
-export function ProjectConfigVariables({ variable }: { variable: Variable }) {
- const isUserLoading = useIsUserLoading()
- const isLoggedIn = useIsLoggedIn()
-
- const {
- selectedInstanceKey,
- setSelectedInstanceKey,
- clear: clearSharedStoreData,
- } = useSnapshot(instanceStore)
- const {
- data: organizations,
- isPending: organizationsIsPending,
- isError: organizationsIsError,
- } = useOrganizationsQuery({ enabled: isLoggedIn })
- const {
- data: projects,
- isPending: projectsIsPending,
- isError: projectsIsError,
- } = useProjectsQuery({ enabled: isLoggedIn })
- const {
- data: branches,
- isPending: branchesIsPending,
- isError: branchesIsError,
- } = useAllProjectsBranchesQuery({ enabled: isLoggedIn })
-
- const anyIsPending = organizationsIsPending || projectsIsPending || branchesIsPending
- const anyIsError = organizationsIsError || projectsIsError || branchesIsError
-
- const stateSummary: ProjectConfigVariablesState = isUserLoading
- ? 'userLoading'
- : !isLoggedIn
- ? 'loggedOut'
- : anyIsPending
- ? 'loggedIn.dataPending'
- : anyIsError
- ? 'loggedIn.dataError'
- : projects.length === 0
- ? 'loggedIn.hasNoData'
- : 'loggedIn.hasData'
-
- useOnLogout(clearSharedStoreData)
-
- const formattedData: InstanceData[] = useMemo(
- () =>
- stateSummary !== 'loggedIn.hasData'
- ? []
- : projects.flatMap((project) => {
- const organization =
- organizations.find((organization) => organization.id === project.organization_id) ??
- null
-
- // @ts-ignore -- problem with OpenAPI spec that codegen reads from
- if (!project.is_branch_enabled) {
- return { organization, project }
- }
-
- // @ts-ignore -- problem with OpenAPI spec that codegen reads from
- const projectBranches = branches[project.ref]
- if (!projectBranches) {
- return { organization, project }
- }
-
- return projectBranches.map((branch) => ({ organization, project, branch }))
- }),
- [branches, organizations, projects, stateSummary]
- )
-
- useEffect(() => {
- if (!selectedInstanceKey && typeof window !== undefined) {
- let storedInstanceKey: InstanceKey = null
- const storedMaybeInstanceKey = retrieve('local', LOCAL_STORAGE_KEYS.SAVED_ORG_PROJECT_BRANCH)
- if (storedMaybeInstanceKey) {
- storedInstanceKey = fromStoredString(storedMaybeInstanceKey)
- }
- setSelectedInstanceKey(storedInstanceKey ?? toInstanceKey(formattedData[0]) ?? null)
- }
- }, [selectedInstanceKey, setSelectedInstanceKey, formattedData])
-
- return (
-