|
|
@@ -1,5 +1,5 @@
|
|
|
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 { ScrollView } from "@opencode-ai/ui/scroll-view"
|
|
|
import { ButtonV2 } from "@opencode-ai/ui/v2/button-v2"
|
|
|
@@ -39,7 +39,6 @@ function isBackgroundOpen(event: MouseEvent) {
|
|
|
export type HomeSessionsViewProps = {
|
|
|
language: ReturnType<typeof useLanguage>
|
|
|
groups: Accessor<HomeSessionGroup[]>
|
|
|
- loading: Accessor<boolean>
|
|
|
showProjectName: Accessor<boolean>
|
|
|
server: Accessor<ServerConnection.Key>
|
|
|
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}>
|
|
|
<HomeSessionSearch {...props} />
|
|
|
- <Show when={props.groups().length > 0 && props.canCreateSession()}>
|
|
|
- <div class="pointer-events-none absolute right-0 top-[84px] z-20 flex lg:top-[108px]">
|
|
|
- <ButtonV2
|
|
|
- data-action="home-new-session"
|
|
|
- variant="ghost-muted"
|
|
|
- size="normal"
|
|
|
- icon="edit"
|
|
|
- class="pointer-events-auto h-7 px-2 [font-weight:530]"
|
|
|
- onClick={props.onCreateSession}
|
|
|
- >
|
|
|
- {props.language.t("command.session.new")}
|
|
|
- </ButtonV2>
|
|
|
- </div>
|
|
|
- </Show>
|
|
|
+ <Suspense>
|
|
|
+ <Show when={props.groups().length > 0 && props.canCreateSession()}>
|
|
|
+ <div class="pointer-events-none absolute right-0 top-[84px] z-20 flex lg:top-[108px]">
|
|
|
+ <ButtonV2
|
|
|
+ data-action="home-new-session"
|
|
|
+ variant="ghost-muted"
|
|
|
+ size="normal"
|
|
|
+ icon="edit"
|
|
|
+ class="pointer-events-auto h-7 px-2 [font-weight:530]"
|
|
|
+ onClick={props.onCreateSession}
|
|
|
+ >
|
|
|
+ {props.language.t("command.session.new")}
|
|
|
+ </ButtonV2>
|
|
|
+ </div>
|
|
|
+ </Show>
|
|
|
+ </Suspense>
|
|
|
</div>
|
|
|
<div class="pointer-events-none sticky top-[84px] z-40 h-0 -mr-3 lg:top-[108px]">
|
|
|
<div
|
|
|
@@ -104,8 +105,7 @@ export function HomeSessionsView(props: HomeSessionsViewProps) {
|
|
|
/>
|
|
|
</div>
|
|
|
<div class="-mr-3 min-h-[calc(100cqh-72px)] lg:min-h-[calc(100cqh-96px)]">
|
|
|
- <Show
|
|
|
- when={!props.loading()}
|
|
|
+ <Suspense
|
|
|
fallback={
|
|
|
<div class="pt-3">
|
|
|
<HomeSessionSkeleton label={props.language.t("common.loading")} />
|
|
|
@@ -141,7 +141,7 @@ export function HomeSessionsView(props: HomeSessionsViewProps) {
|
|
|
</For>
|
|
|
</div>
|
|
|
</Show>
|
|
|
- </Show>
|
|
|
+ </Suspense>
|
|
|
</div>
|
|
|
</section>
|
|
|
)
|