|
5 | 5 |
|
6 | 6 | import { BootScreen, Button, CorbitsMark, EmptyState } from "@corbits/react-ui"; |
7 | 7 | import { QueryClientProvider } from "@tanstack/react-query"; |
8 | | -import { CircleAlert } from "lucide-react"; |
| 8 | +import { BoldIconProvider, WarningCircle } from "@corbits/icons"; |
9 | 9 | import { useEffect, useMemo } from "react"; |
10 | 10 |
|
11 | 11 | import { AuthScreen } from "./auth-screen"; |
@@ -160,56 +160,60 @@ export function App({ |
160 | 160 | readonly provisioningErrorRefId?: string | undefined; |
161 | 161 | readonly onRetryProvisioning?: () => void; |
162 | 162 | }) { |
163 | | - if (session.kind === "signed-in" && provisioningError) { |
164 | | - return ( |
165 | | - <ProvisioningErrorPage |
166 | | - message={provisioningError} |
167 | | - refId={provisioningErrorRefId} |
168 | | - onRetry={onRetryProvisioning ?? onRetry} |
169 | | - /> |
170 | | - ); |
171 | | - } |
172 | | - switch (session.kind) { |
173 | | - case "loading": |
174 | | - return ( |
175 | | - <div className="app-boot-frame"> |
176 | | - <BootScreen message="Loading workbench" brand={<Brand />} /> |
177 | | - </div> |
178 | | - ); |
179 | | - case "signed-out": |
180 | | - if (path !== LOGIN_PATH) { |
181 | | - return <LoginRedirect path={path} navigate={navigate} />; |
182 | | - } |
183 | | - return <AuthScreen onSignedIn={onSignedIn} />; |
184 | | - case "error": |
185 | | - return ( |
186 | | - <div className="app-boot-frame"> |
187 | | - <EmptyState |
188 | | - icon={<CircleAlert />} |
189 | | - title="Connection lost" |
190 | | - description={session.message} |
191 | | - action={ |
192 | | - <Button variant="outline" onClick={onRetry}> |
193 | | - Try again |
194 | | - </Button> |
195 | | - } |
196 | | - /> |
197 | | - </div> |
198 | | - ); |
199 | | - case "signed-in": |
200 | | - if (path === LOGIN_PATH) { |
201 | | - return <LoginBounceHome navigate={navigate} />; |
202 | | - } |
203 | | - if (path === ONBOARDING_PATH) { |
204 | | - return <OnboardingGate navigate={navigate} user={session.user} />; |
205 | | - } |
| 163 | + return <BoldIconProvider>{renderApp()}</BoldIconProvider>; |
| 164 | + |
| 165 | + function renderApp() { |
| 166 | + if (session.kind === "signed-in" && provisioningError) { |
206 | 167 | return ( |
207 | | - <Shell |
208 | | - path={path} |
209 | | - navigate={navigate} |
210 | | - user={session.user} |
211 | | - onSignOut={onSignOut} |
| 168 | + <ProvisioningErrorPage |
| 169 | + message={provisioningError} |
| 170 | + refId={provisioningErrorRefId} |
| 171 | + onRetry={onRetryProvisioning ?? onRetry} |
212 | 172 | /> |
213 | 173 | ); |
| 174 | + } |
| 175 | + switch (session.kind) { |
| 176 | + case "loading": |
| 177 | + return ( |
| 178 | + <div className="app-boot-frame"> |
| 179 | + <BootScreen message="Loading workbench" brand={<Brand />} /> |
| 180 | + </div> |
| 181 | + ); |
| 182 | + case "signed-out": |
| 183 | + if (path !== LOGIN_PATH) { |
| 184 | + return <LoginRedirect path={path} navigate={navigate} />; |
| 185 | + } |
| 186 | + return <AuthScreen onSignedIn={onSignedIn} />; |
| 187 | + case "error": |
| 188 | + return ( |
| 189 | + <div className="app-boot-frame"> |
| 190 | + <EmptyState |
| 191 | + icon={<WarningCircle />} |
| 192 | + title="Connection lost" |
| 193 | + description={session.message} |
| 194 | + action={ |
| 195 | + <Button variant="outline" onClick={onRetry}> |
| 196 | + Try again |
| 197 | + </Button> |
| 198 | + } |
| 199 | + /> |
| 200 | + </div> |
| 201 | + ); |
| 202 | + case "signed-in": |
| 203 | + if (path === LOGIN_PATH) { |
| 204 | + return <LoginBounceHome navigate={navigate} />; |
| 205 | + } |
| 206 | + if (path === ONBOARDING_PATH) { |
| 207 | + return <OnboardingGate navigate={navigate} user={session.user} />; |
| 208 | + } |
| 209 | + return ( |
| 210 | + <Shell |
| 211 | + path={path} |
| 212 | + navigate={navigate} |
| 213 | + user={session.user} |
| 214 | + onSignOut={onSignOut} |
| 215 | + /> |
| 216 | + ); |
| 217 | + } |
214 | 218 | } |
215 | 219 | } |
0 commit comments