This commit is contained in:
Brendan Allan
2026-08-17 23:06:37 +08:00
parent d4e363e175
commit 667e6594ce
2 changed files with 16 additions and 21 deletions
+12 -17
View File
@@ -66,19 +66,16 @@ const DirectoryDraftRedirect = () => {
}
function TargetServerRoute(props: ParentProps) {
const params = useParams<{ serverKey: string; id: string }>()
const params = useParams<{ serverKey: string }>()
const global = useGlobal()
const conn = createMemo(() => {
const key = requireServerKey(params.serverKey)
return global.servers.list().find((item) => ServerConnection.key(item) === key)
})
const conn = createMemo(() =>
global.servers.list().find((item) => ServerConnection.key(item) === requireServerKey(params.serverKey)),
)
return (
// Owns the server-identity remount. Session changes must not remount this subtree.
<Show when={requireServerKey(params.serverKey)} keyed>
<Show when={conn()} keyed>
{(conn) => <ServerProvider conn={conn}>{props.children}</ServerProvider>}
</Show>
<Show when={conn()} keyed>
{(conn) => <ServerProvider conn={conn}>{props.children}</ServerProvider>}
</Show>
)
}
@@ -87,14 +84,12 @@ function DraftRoute() {
const [search] = useSearchParams<{ draftId?: string }>()
const tabs = useTabs()
return (
<Show when={tabs.ready()}>
<Show
when={tabs.store.find((tab): tab is DraftTab => tab.type === "draft" && tab.draftID === search.draftId)}
keyed
fallback={<Navigate href="/" />}
>
{(draft) => <ResolvedDraftRoute draft={draft} />}
</Show>
<Show
when={tabs.store.find((tab): tab is DraftTab => tab.type === "draft" && tab.draftID === search.draftId)}
keyed
fallback={tabs.ready() && <Navigate href="/" />}
>
{(draft) => <ResolvedDraftRoute draft={draft} />}
</Show>
)
}
+4 -4
View File
@@ -45,7 +45,7 @@ import { ErrorPage } from "@/pages/error"
import { CommentsProvider, useComments } from "@/context/comments"
import { useCommand } from "@/context/command"
import { SessionUIProvider } from "@/pages/directory-layout"
import { useData } from "@/context/server"
import { useData, useServer } from "@/context/server"
import { useLanguage } from "@/context/language"
import { useLayout } from "@/context/layout"
import { ModelsProvider } from "@/context/models"
@@ -207,9 +207,9 @@ function SessionErrorFallback(props: { error: unknown; sessionID?: string; serve
}
function ResolvedTargetSessionRoute() {
const params = useParams<{ serverKey: string; id: string }>()
const params = useParams<{ id: string }>()
const server = useServer()
const data = useData()
const serverKey = createMemo(() => requireServerKey(params.serverKey))
const current = createSessionResolution(
() => params.id,
() => data.session,
@@ -225,7 +225,7 @@ function ResolvedTargetSessionRoute() {
<Show when={directory()}>
{(dir) => (
<LocationProvider directory={dir()}>
<SessionUIProvider directory={dir()} server={serverKey()}>
<SessionUIProvider directory={dir()} server={server.key}>
<TargetSessionPage />
</SessionUIProvider>
</LocationProvider>