|
|
@@ -8,6 +8,7 @@ import { Keybind } from "@/util/keybind"
|
|
|
import { useTheme } from "../context/theme"
|
|
|
import { useSDK } from "../context/sdk"
|
|
|
import { DialogSessionRename } from "./dialog-session-rename"
|
|
|
+import "opentui-spinner/solid"
|
|
|
|
|
|
export function DialogSessionList() {
|
|
|
const dialog = useDialog()
|
|
|
@@ -22,6 +23,8 @@ export function DialogSessionList() {
|
|
|
|
|
|
const currentSessionID = createMemo(() => (route.data.type === "session" ? route.data.sessionID : undefined))
|
|
|
|
|
|
+ const spinnerFrames = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"]
|
|
|
+
|
|
|
const options = createMemo(() => {
|
|
|
const today = new Date().toDateString()
|
|
|
return sync.data.session
|
|
|
@@ -34,12 +37,15 @@ export function DialogSessionList() {
|
|
|
category = "Today"
|
|
|
}
|
|
|
const isDeleting = toDelete() === x.id
|
|
|
+ const status = sync.data.session_status[x.id]
|
|
|
+ const isWorking = status?.type === "busy"
|
|
|
return {
|
|
|
title: isDeleting ? `Press ${deleteKeybind} again to confirm` : x.title,
|
|
|
bg: isDeleting ? theme.error : undefined,
|
|
|
value: x.id,
|
|
|
category,
|
|
|
footer: Locale.time(x.time.updated),
|
|
|
+ gutter: isWorking ? <spinner frames={spinnerFrames} interval={80} color={theme.primary} /> : undefined,
|
|
|
}
|
|
|
})
|
|
|
.slice(0, 150)
|