diff options
Diffstat (limited to 'packages/app')
| -rw-r--r-- | packages/app/src/app.tsx | 132 | ||||
| -rw-r--r-- | packages/app/src/entry.tsx | 6 | ||||
| -rw-r--r-- | packages/app/src/index.ts | 2 |
3 files changed, 74 insertions, 66 deletions
diff --git a/packages/app/src/app.tsx b/packages/app/src/app.tsx index a2f1aa401..13d9d147e 100644 --- a/packages/app/src/app.tsx +++ b/packages/app/src/app.tsx @@ -1,5 +1,5 @@ import "@/index.css" -import { ErrorBoundary, Show, Suspense, lazy, type ParentProps } from "solid-js" +import { ErrorBoundary, Show, lazy, type ParentProps } from "solid-js" import { Router, Route, Navigate } from "@solidjs/router" import { MetaProvider } from "@solidjs/meta" import { Font } from "@opencode-ai/ui/font" @@ -20,10 +20,12 @@ import { FileProvider } from "@/context/file" import { NotificationProvider } from "@/context/notification" import { DialogProvider } from "@opencode-ai/ui/context/dialog" import { CommandProvider } from "@/context/command" +import { Logo } from "@opencode-ai/ui/logo" import Layout from "@/pages/layout" import DirectoryLayout from "@/pages/directory-layout" import { ErrorPage } from "./pages/error" import { iife } from "@opencode-ai/util/iife" +import { Suspense } from "solid-js" const Home = lazy(() => import("@/pages/home")) const Session = lazy(() => import("@/pages/session")) @@ -31,7 +33,7 @@ const Loading = () => <div class="size-full flex items-center justify-center tex declare global { interface Window { - __OPENCODE__?: { updaterEnabled?: boolean; port?: number } + __OPENCODE__?: { updaterEnabled?: boolean; port?: number; serverReady?: boolean } } } @@ -47,16 +49,7 @@ const defaultServerUrl = iife(() => { return window.location.origin }) -function ServerKey(props: ParentProps) { - const server = useServer() - return ( - <Show when={server.url} keyed> - {props.children} - </Show> - ) -} - -export function App() { +export function AppBaseProviders(props: ParentProps) { return ( <MetaProvider> <Font /> @@ -65,57 +58,7 @@ export function App() { <DialogProvider> <MarkedProvider> <DiffComponentProvider component={Diff}> - <CodeComponentProvider component={Code}> - <ServerProvider defaultUrl={defaultServerUrl}> - <ServerKey> - <GlobalSDKProvider> - <GlobalSyncProvider> - <Router - root={(props) => ( - <PermissionProvider> - <LayoutProvider> - <NotificationProvider> - <CommandProvider> - <Layout>{props.children}</Layout> - </CommandProvider> - </NotificationProvider> - </LayoutProvider> - </PermissionProvider> - )} - > - <Route - path="/" - component={() => ( - <Suspense fallback={<Loading />}> - <Home /> - </Suspense> - )} - /> - <Route path="/:dir" component={DirectoryLayout}> - <Route path="/" component={() => <Navigate href="session" />} /> - <Route - path="/session/:id?" - component={(p) => ( - <Show when={p.params.id ?? "new"} keyed> - <TerminalProvider> - <FileProvider> - <PromptProvider> - <Suspense fallback={<Loading />}> - <Session /> - </Suspense> - </PromptProvider> - </FileProvider> - </TerminalProvider> - </Show> - )} - /> - </Route> - </Router> - </GlobalSyncProvider> - </GlobalSDKProvider> - </ServerKey> - </ServerProvider> - </CodeComponentProvider> + <CodeComponentProvider component={Code}>{props.children}</CodeComponentProvider> </DiffComponentProvider> </MarkedProvider> </DialogProvider> @@ -124,3 +67,66 @@ export function App() { </MetaProvider> ) } + +function ServerKey(props: ParentProps) { + const server = useServer() + return ( + <Show when={server.url} keyed> + {props.children} + </Show> + ) +} + +export function AppInterface() { + return ( + <ServerProvider defaultUrl={defaultServerUrl}> + <ServerKey> + <GlobalSDKProvider> + <GlobalSyncProvider> + <Router + root={(props) => ( + <PermissionProvider> + <LayoutProvider> + <NotificationProvider> + <CommandProvider> + <Layout>{props.children}</Layout> + </CommandProvider> + </NotificationProvider> + </LayoutProvider> + </PermissionProvider> + )} + > + <Route + path="/" + component={() => ( + <Suspense fallback={<Loading />}> + <Home /> + </Suspense> + )} + /> + <Route path="/:dir" component={DirectoryLayout}> + <Route path="/" component={() => <Navigate href="session" />} /> + <Route + path="/session/:id?" + component={(p) => ( + <Show when={p.params.id ?? "new"} keyed> + <TerminalProvider> + <FileProvider> + <PromptProvider> + <Suspense fallback={<Loading />}> + <Session /> + </Suspense> + </PromptProvider> + </FileProvider> + </TerminalProvider> + </Show> + )} + /> + </Route> + </Router> + </GlobalSyncProvider> + </GlobalSDKProvider> + </ServerKey> + </ServerProvider> + ) +} diff --git a/packages/app/src/entry.tsx b/packages/app/src/entry.tsx index a915aa25b..28741098c 100644 --- a/packages/app/src/entry.tsx +++ b/packages/app/src/entry.tsx @@ -1,6 +1,6 @@ // @refresh reload import { render } from "solid-js/web" -import { App } from "@/app" +import { AppBaseProviders, AppInterface } from "@/app" import { Platform, PlatformProvider } from "@/context/platform" import pkg from "../package.json" @@ -55,7 +55,9 @@ const platform: Platform = { render( () => ( <PlatformProvider value={platform}> - <App /> + <AppBaseProviders> + <AppInterface /> + </AppBaseProviders> </PlatformProvider> ), root!, diff --git a/packages/app/src/index.ts b/packages/app/src/index.ts index cf5be9f51..df3181133 100644 --- a/packages/app/src/index.ts +++ b/packages/app/src/index.ts @@ -1,2 +1,2 @@ export { PlatformProvider, type Platform } from "./context/platform" -export { App } from "./app" +export { AppBaseProviders, AppInterface } from "./app" |
