Show loading indicator before listing sessions

This commit is contained in:
Shantur Rathore
2025-12-07 01:29:36 +00:00
parent d0cab51eca
commit 2f58e8a1a9

View File

@@ -1,5 +1,5 @@
import { Component, createSignal, Show, For, createEffect, onMount, onCleanup, createMemo } from "solid-js" import { Component, createSignal, Show, For, createEffect, onMount, onCleanup, createMemo } from "solid-js"
import { Trash2 } from "lucide-solid" import { Loader2, Trash2 } from "lucide-solid"
import type { Instance } from "../types/instance" import type { Instance } from "../types/instance"
import { getParentSessions, createSession, setActiveParentSession, deleteSession, loading } from "../stores/sessions" import { getParentSessions, createSession, setActiveParentSession, deleteSession, loading } from "../stores/sessions"
@@ -26,6 +26,7 @@ const InstanceWelcomeView: Component<InstanceWelcomeViewProps> = (props) => {
) )
const parentSessions = () => getParentSessions(props.instance.id) const parentSessions = () => getParentSessions(props.instance.id)
const isFetchingSessions = createMemo(() => Boolean(loading().fetchingSessions.get(props.instance.id)))
const isSessionDeleting = (sessionId: string) => { const isSessionDeleting = (sessionId: string) => {
const deleting = loading().deletingSession.get(props.instance.id) const deleting = loading().deletingSession.get(props.instance.id)
return deleting ? deleting.has(sessionId) : false return deleting ? deleting.has(sessionId) : false
@@ -254,6 +255,9 @@ const InstanceWelcomeView: Component<InstanceWelcomeViewProps> = (props) => {
<div class="flex-1 flex flex-col gap-4 min-h-0"> <div class="flex-1 flex flex-col gap-4 min-h-0">
<Show <Show
when={parentSessions().length > 0} when={parentSessions().length > 0}
fallback={
<Show
when={isFetchingSessions()}
fallback={ fallback={
<div class="panel panel-empty-state flex-1 flex flex-col justify-center"> <div class="panel panel-empty-state flex-1 flex flex-col justify-center">
<div class="panel-empty-state-icon"> <div class="panel-empty-state-icon">
@@ -275,6 +279,16 @@ const InstanceWelcomeView: Component<InstanceWelcomeViewProps> = (props) => {
</Show> </Show>
</div> </div>
} }
>
<div class="panel panel-empty-state flex-1 flex flex-col justify-center">
<div class="panel-empty-state-icon">
<Loader2 class="w-12 h-12 mx-auto animate-spin text-muted" />
</div>
<p class="panel-empty-state-title">Loading Sessions</p>
<p class="panel-empty-state-description">Fetching your previous sessions...</p>
</div>
</Show>
}
> >
<div class="panel flex flex-col flex-1 min-h-0"> <div class="panel flex flex-col flex-1 min-h-0">
<div class="panel-header"> <div class="panel-header">