diff --git a/packages/app/src/pages/session.tsx b/packages/app/src/pages/session.tsx index bd12bd1356..6b489435e3 100644 --- a/packages/app/src/pages/session.tsx +++ b/packages/app/src/pages/session.tsx @@ -82,7 +82,7 @@ import { Identifier } from "@/utils/id" import { diffs as list } from "@/utils/diffs" import { Persist, persisted } from "@/utils/persist" import { extractPromptFromParts } from "@/utils/prompt" -import { formatServerError } from "@/utils/server-errors" +import { formatServerError, isSessionNotFoundError } from "@/utils/server-errors" import { legacySessionHref, requireServerKey, selectSessionLineage, sessionHref } from "@/utils/session-route" import { useUsageExceededDialogs } from "./session/usage-exceeded-dialogs" import { createSessionOwnership } from "./session/session-ownership" @@ -100,6 +100,15 @@ const sessionViewState = () => ({ changes: "git" as ChangeMode, }) +function isLocalSessionNotFoundError(error: unknown, sessionID: string) { + return error instanceof Error && error.message === `Session not found: ${sessionID}` +} + +function isCurrentSessionNotFoundError(error: unknown, sessionID: string | undefined) { + if (!sessionID) return false + return isSessionNotFoundError(error, sessionID) || isLocalSessionNotFoundError(error, sessionID) +} + async function runPromptRollbackMutation(input: { capturePrompt: () => { current: () => T[]; set: (value: T[]) => void; reset: () => void } optimistic: (prompt: { set: (value: T[]) => void; reset: () => void }) => void @@ -150,7 +159,7 @@ function SessionRouteErrorBoundary(props: ParentProps<{ sessionID?: string; padd settings.general.newLayoutDesigns() ? ( - + ) : ( @@ -163,6 +172,20 @@ function SessionRouteErrorBoundary(props: ParentProps<{ sessionID?: string; padd ) } +function SessionErrorFallback(props: { error: unknown; sessionID?: string }) { + const language = useLanguage() + if (isCurrentSessionNotFoundError(props.error, props.sessionID)) { + return ( +
+
+
{language.t("session.error.notFound")}
+
+
+ ) + } + return +} + function ResolvedTargetSessionRoute() { const params = useParams<{ serverKey: string; id: string }>() const settings = useSettings() @@ -1859,7 +1882,7 @@ export default function Page() { const sessionErrorFallback = (error: unknown, reset: () => void) => { createEffect(on(sessionKey, reset, { defer: true })) - return + return } const sessionPanelContent = () => (