diff --git a/web/src/app/_components/message-list-view.tsx b/web/src/app/_components/message-list-view.tsx
index c8c59c7..2734489 100644
--- a/web/src/app/_components/message-list-view.tsx
+++ b/web/src/app/_components/message-list-view.tsx
@@ -16,6 +16,7 @@ import {
} from "~/components/ui/card";
import type { Message, Option } from "~/core/messages";
import {
+ closeResearch,
openResearch,
useMessage,
useResearchTitle,
@@ -209,7 +210,7 @@ function MessageListItem({
className={cn(
`flex w-fit max-w-[85%] flex-col rounded-2xl px-4 py-3 shadow`,
message.role === "user" &&
- "text-primary-foreground bg-brand rounded-ee-none",
+ "text-primary-foreground bg-brand rounded-ee-none",
message.role === "assistant" && "bg-card rounded-es-none",
className,
)}
@@ -245,7 +246,7 @@ function MessageListItem({
const title = useResearchTitle(researchId);
const handleOpen = useCallback(() => {
if (openResearchId === researchId) {
- openResearch(null);
+ closeResearch();
} else {
openResearch(researchId);
}
@@ -318,11 +319,10 @@ function PlanCard({
- {`### ${
- plan.title !== undefined && plan.title !== ""
- ? plan.title
- : "Deep Research"
- }`}
+ {`### ${plan.title !== undefined && plan.title !== ""
+ ? plan.title
+ : "Deep Research"
+ }`}
diff --git a/web/src/app/_components/research-block.tsx b/web/src/app/_components/research-block.tsx
index 1f55536..b1f4e3f 100644
--- a/web/src/app/_components/research-block.tsx
+++ b/web/src/app/_components/research-block.tsx
@@ -8,7 +8,7 @@ import { Button } from "~/components/ui/button";
import { Card } from "~/components/ui/card";
import { Tabs, TabsContent, TabsList, TabsTrigger } from "~/components/ui/tabs";
import { useReplay } from "~/core/replay";
-import { listenToPodcast, openResearch, useStore } from "~/core/store";
+import { closeResearch, listenToPodcast, useStore } from "~/core/store";
import { cn } from "~/lib/utils";
import { ResearchActivitiesBlock } from "./research-activities-block";
@@ -102,9 +102,7 @@ export function ResearchBlock({
className="text-gray-400"
size="sm"
variant="ghost"
- onClick={() => {
- openResearch(null);
- }}
+ onClick={() => { closeResearch(); }}
>
diff --git a/web/src/core/store/store.ts b/web/src/core/store/store.ts
index 9ab1e14..d8272ac 100644
--- a/web/src/core/store/store.ts
+++ b/web/src/core/store/store.ts
@@ -28,7 +28,9 @@ export const useStore = create<{
appendMessage: (message: Message) => void;
updateMessage: (message: Message) => void;
updateMessages: (messages: Message[]) => void;
- setOngoingResearchId: (value: string | null) => void;
+ openResearch: (researchId: string | null) => void;
+ closeResearch: () => void;
+ setOngoingResearch: (researchId: string | null) => void;
}>((set) => ({
responding: false,
threadId: THREAD_ID,
@@ -57,8 +59,14 @@ export const useStore = create<{
return { messages: newMessages };
});
},
- setOngoingResearchId(value: string | null) {
- set({ ongoingResearchId: value });
+ openResearch(researchId: string | null) {
+ set({ openResearchId: researchId });
+ },
+ closeResearch() {
+ set({ openResearchId: null });
+ },
+ setOngoingResearch(researchId: string | null) {
+ set({ ongoingResearchId: researchId });
}
}));
@@ -133,7 +141,7 @@ export async function sendMessage(
useStore.getState().updateMessage(message);
}
}
- useStore.getState().setOngoingResearchId(null);
+ useStore.getState().setOngoingResearch(null);
} finally {
setResponding(false);
}
@@ -191,7 +199,7 @@ function updateMessage(message: Message) {
message.agent === "reporter" &&
!message.isStreaming
) {
- useStore.getState().setOngoingResearchId(null);
+ useStore.getState().setOngoingResearch(null);
}
useStore.getState().updateMessage(message);
}
@@ -248,9 +256,11 @@ function appendResearchActivity(message: Message) {
}
export function openResearch(researchId: string | null) {
- useStore.setState({
- openResearchId: researchId,
- });
+ useStore.getState().openResearch(researchId);
+}
+
+export function closeResearch() {
+ useStore.getState().closeResearch();
}
export async function listenToPodcast(researchId: string) {