fix(app): localize home session suspense (#39285)

This commit is contained in:
Brendan Allan
2026-07-28 16:28:59 +08:00
committed by GitHub
parent b80b875647
commit 8f776e8076
2 changed files with 19 additions and 20 deletions
@@ -1,5 +1,5 @@
import type { Session } from "@opencode-ai/sdk/v2/client" import type { Session } from "@opencode-ai/sdk/v2/client"
import { type Accessor, createMemo, For, Show } from "solid-js" import { type Accessor, createMemo, For, Show, Suspense } from "solid-js"
import { Spinner } from "@opencode-ai/ui/spinner" import { Spinner } from "@opencode-ai/ui/spinner"
import { ScrollView } from "@opencode-ai/ui/scroll-view" import { ScrollView } from "@opencode-ai/ui/scroll-view"
import { ButtonV2 } from "@opencode-ai/ui/v2/button-v2" import { ButtonV2 } from "@opencode-ai/ui/v2/button-v2"
@@ -39,7 +39,6 @@ function isBackgroundOpen(event: MouseEvent) {
export type HomeSessionsViewProps = { export type HomeSessionsViewProps = {
language: ReturnType<typeof useLanguage> language: ReturnType<typeof useLanguage>
groups: Accessor<HomeSessionGroup[]> groups: Accessor<HomeSessionGroup[]>
loading: Accessor<boolean>
showProjectName: Accessor<boolean> showProjectName: Accessor<boolean>
server: Accessor<ServerConnection.Key> server: Accessor<ServerConnection.Key>
canCreateSession: Accessor<boolean> canCreateSession: Accessor<boolean>
@@ -81,20 +80,22 @@ export function HomeSessionsView(props: HomeSessionsViewProps) {
> >
<div class="sticky top-0 z-30 shrink-0 bg-v2-background-bg-base pb-3 pt-6 lg:pt-12" onWheel={props.onWheel}> <div class="sticky top-0 z-30 shrink-0 bg-v2-background-bg-base pb-3 pt-6 lg:pt-12" onWheel={props.onWheel}>
<HomeSessionSearch {...props} /> <HomeSessionSearch {...props} />
<Show when={props.groups().length > 0 && props.canCreateSession()}> <Suspense>
<div class="pointer-events-none absolute right-0 top-[84px] z-20 flex lg:top-[108px]"> <Show when={props.groups().length > 0 && props.canCreateSession()}>
<ButtonV2 <div class="pointer-events-none absolute right-0 top-[84px] z-20 flex lg:top-[108px]">
data-action="home-new-session" <ButtonV2
variant="ghost-muted" data-action="home-new-session"
size="normal" variant="ghost-muted"
icon="edit" size="normal"
class="pointer-events-auto h-7 px-2 [font-weight:530]" icon="edit"
onClick={props.onCreateSession} class="pointer-events-auto h-7 px-2 [font-weight:530]"
> onClick={props.onCreateSession}
{props.language.t("command.session.new")} >
</ButtonV2> {props.language.t("command.session.new")}
</div> </ButtonV2>
</Show> </div>
</Show>
</Suspense>
</div> </div>
<div class="pointer-events-none sticky top-[84px] z-40 h-0 -mr-3 lg:top-[108px]"> <div class="pointer-events-none sticky top-[84px] z-40 h-0 -mr-3 lg:top-[108px]">
<div <div
@@ -104,8 +105,7 @@ export function HomeSessionsView(props: HomeSessionsViewProps) {
/> />
</div> </div>
<div class="-mr-3 min-h-[calc(100cqh-72px)] lg:min-h-[calc(100cqh-96px)]"> <div class="-mr-3 min-h-[calc(100cqh-72px)] lg:min-h-[calc(100cqh-96px)]">
<Show <Suspense
when={!props.loading()}
fallback={ fallback={
<div class="pt-3"> <div class="pt-3">
<HomeSessionSkeleton label={props.language.t("common.loading")} /> <HomeSessionSkeleton label={props.language.t("common.loading")} />
@@ -141,7 +141,7 @@ export function HomeSessionsView(props: HomeSessionsViewProps) {
</For> </For>
</div> </div>
</Show> </Show>
</Show> </Suspense>
</div> </div>
</section> </section>
) )
@@ -12,7 +12,6 @@ export function HomeSessions(props: {
<HomeSessionsView <HomeSessionsView
language={props.sessions.copy.language} language={props.sessions.copy.language}
groups={props.sessions.data.groups} groups={props.sessions.data.groups}
loading={props.sessions.data.loading}
showProjectName={props.sessions.session.showProjectName} showProjectName={props.sessions.session.showProjectName}
server={props.sessions.session.server} server={props.sessions.session.server}
canCreateSession={props.sessions.session.canCreate} canCreateSession={props.sessions.session.canCreate}