| ... | ... | @@ -24,13 +24,7 @@ import { availableCloudEnvironmentPresentation } from "../cloud/cloudEnvironment |
| 24 | 24 | import { ConnectionStatusDot } from "./ConnectionStatusDot"; |
| 25 | 25 | import { type RelayEnvironmentView, useConnectionController } from "./useConnectionController"; |
| 26 | 26 | |
| 27 | | /** |
| 28 | | * "T3 Connect" section: every environment published to the signed-in account, |
| 29 | | * with connect switches, availability status, refresh, and loading/error |
| 30 | | * states. Shared between the Settings environments screen and the T3 Connect |
| 31 | | * onboarding sheet. |
| 32 | | */ |
| 33 | | export function CloudEnvironmentRows(props: { |
| 27 | interface CloudEnvironmentRowsProps { |
| 34 | 28 | readonly connectedCloudEnvironments: ReadonlyArray<ConnectedEnvironmentSummary>; |
| 35 | 29 | readonly onReconnectEnvironment: (environmentId: EnvironmentId) => void; |
| 36 | 30 | readonly showcaseAvailableEnvironments?: ReadonlyArray<RelayEnvironmentView>; |
| ... | ... | @@ -41,8 +35,31 @@ export function CloudEnvironmentRows(props: { |
| 41 | 35 | * pull-to-refresh). |
| 42 | 36 | */ |
| 43 | 37 | readonly showHeader?: boolean; |
| 44 | | }) { |
| 38 | } |
| 39 | |
| 40 | /** |
| 41 | * "T3 Connect" section: every environment published to the signed-in account, |
| 42 | * with connect switches, availability status, refresh, and loading/error |
| 43 | * states. Shared between the Settings environments screen and the T3 Connect |
| 44 | * onboarding sheet. |
| 45 | */ |
| 46 | export function CloudEnvironmentRows(props: CloudEnvironmentRowsProps) { |
| 47 | // Showcase captures run without a Clerk publishable key, so `ClerkProvider` |
| 48 | // is never mounted and any `useAuth` call throws — the fixture states whether |
| 49 | // the rows are signed in instead of asking Clerk. |
| 50 | if (props.showcaseSignedIn !== undefined) { |
| 51 | return props.showcaseSignedIn ? <CloudEnvironmentRowsContent {...props} /> : null; |
| 52 | } |
| 53 | return <SignedInCloudEnvironmentRows {...props} />; |
| 54 | } |
| 55 | |
| 56 | function SignedInCloudEnvironmentRows(props: CloudEnvironmentRowsProps) { |
| 45 | 57 | const { isSignedIn } = useAuth({ treatPendingAsSignedOut: false }); |
| 58 | if (!isSignedIn) return null; |
| 59 | return <CloudEnvironmentRowsContent {...props} />; |
| 60 | } |
| 61 | |
| 62 | function CloudEnvironmentRowsContent(props: CloudEnvironmentRowsProps) { |
| 46 | 63 | const controller = useConnectionController(); |
| 47 | 64 | const iconColor = useThemeColor("--color-icon"); |
| 48 | 65 | const availableCloudEnvironments = |
| ... | ... | @@ -67,8 +84,6 @@ export function CloudEnvironmentRows(props: { |
| 67 | 84 | |
| 68 | 85 | const showHeader = props.showHeader ?? true; |
| 69 | 86 | |
| 70 | | if (!(props.showcaseSignedIn ?? isSignedIn)) return null; |
| 71 | | |
| 72 | 87 | return ( |
| 73 | 88 | <View collapsable={false} className={cn("gap-3", showHeader && "mt-5")}> |
| 74 | 89 | {showHeader ? ( |