diff --git a/apps/dashboard/src/app/nebula-app/(app)/components/ChatPageContent.tsx b/apps/dashboard/src/app/nebula-app/(app)/components/ChatPageContent.tsx index e0d28857a65..4bca9787c17 100644 --- a/apps/dashboard/src/app/nebula-app/(app)/components/ChatPageContent.tsx +++ b/apps/dashboard/src/app/nebula-app/(app)/components/ChatPageContent.tsx @@ -9,7 +9,7 @@ import { DialogTitle, } from "@/components/ui/dialog"; import { useThirdwebClient } from "@/constants/thirdweb.client"; -import { ArrowRightIcon } from "lucide-react"; +import { ArrowRightIcon, MessageSquareXIcon } from "lucide-react"; import Link from "next/link"; import { useCallback, useEffect, useMemo, useRef, useState } from "react"; import { @@ -263,8 +263,11 @@ export function ChatPageContent(props: { const showEmptyState = !userHasSubmittedMessage && messages.length === 0 && + !props.session && !props.initialParams?.q; + const sessionWithNoMessages = props.session && messages.length === 0; + const connectedWalletsMeta: WalletMeta[] = connectedWallets.map((x) => ({ address: x.getAccount()?.address || "", walletId: x.id, @@ -318,17 +321,35 @@ export function ChatPageContent(props: { ) : (
- + {sessionWithNoMessages && ( +
+
+
+ +
+

+ No messages found +

+

+ This session was aborted before receiving any messages +

+
+
+ )} + + {messages.length > 0 && ( + + )}
diff --git a/apps/dashboard/src/app/nebula-app/(app)/hooks/useSessionsWithLocalOverrides.ts b/apps/dashboard/src/app/nebula-app/(app)/hooks/useSessionsWithLocalOverrides.ts index eb8cd56ed43..c1e46724a42 100644 --- a/apps/dashboard/src/app/nebula-app/(app)/hooks/useSessionsWithLocalOverrides.ts +++ b/apps/dashboard/src/app/nebula-app/(app)/hooks/useSessionsWithLocalOverrides.ts @@ -7,7 +7,19 @@ export function useSessionsWithLocalOverrides( ) { const newAddedSessions = useStore(newSessionsStore); const deletedSessions = useStore(deletedSessionsStore); - return [...newAddedSessions, ..._sessions].filter((s) => { + const mergedSessions = [..._sessions]; + + for (const session of newAddedSessions) { + // if adding a new session that has same id as existing session, update the existing session + const index = mergedSessions.findIndex((s) => s.id === session.id); + if (index !== -1) { + mergedSessions[index] = session; + } else { + mergedSessions.push(session); + } + } + + return mergedSessions.filter((s) => { return !deletedSessions.some((d) => d === s.id); }); }