diff --git a/prisma b/prisma index 451b929..12b2d7d 160000 --- a/prisma +++ b/prisma @@ -1 +1 @@ -Subproject commit 451b9293de49a6ada33b8d0b65bbb997c9a19edb +Subproject commit 12b2d7dfc9633de92383882d78a15a6585cd915c diff --git a/src/components/pages/(protected)/projects/[projectId]/workflows/[workflowId]/form.tsx b/src/components/pages/(protected)/projects/[projectId]/workflows/[workflowId]/form.tsx index 99ec006..14cfced 100644 --- a/src/components/pages/(protected)/projects/[projectId]/workflows/[workflowId]/form.tsx +++ b/src/components/pages/(protected)/projects/[projectId]/workflows/[workflowId]/form.tsx @@ -5,22 +5,27 @@ import { ScrollArea, ScrollBar } from "@/components/ui/scroll-area" import Remark from "@/components/ux/remark" import useWorkflowId from "@/lib/context/workflow-id" import { Role, WorkflowIdComponentProps } from "@/lib/types/graph" -import { getSuggestions } from "@/lib/utils" +import { cn, getSuggestions } from "@/lib/utils" import { Send } from "lucide-react" -import React, { useEffect, useMemo, useRef } from "react" +import React, { useCallback, useEffect, useMemo, useRef } from "react" export default function QueryForm({ workflowData }: WorkflowIdComponentProps) { - const { queryWorkflowForm, handleSubmit, messages, handleSuggestion } = - useWorkflowId() + const { + queryWorkflowForm, + handleSubmit, + messages, + handleSuggestion, + streamedMessage, + isMessageLoading, + } = useWorkflowId() const { registerField, - isLoading, formValues: { bodyParams: { userQuery }, }, } = queryWorkflowForm - const isValid = userQuery.trim().length > 0 + const isValid = userQuery.trim().length > 0 && !isMessageLoading const divRef = useRef(null) useEffect(() => { @@ -28,7 +33,7 @@ export default function QueryForm({ workflowData }: WorkflowIdComponentProps) { top: divRef.current?.scrollHeight, behavior: "smooth", }) - }, [isLoading]) + }, [isMessageLoading]) const suggestions = useMemo( () => getSuggestions(workflowData), @@ -36,6 +41,21 @@ export default function QueryForm({ workflowData }: WorkflowIdComponentProps) { [messages, workflowData], ) + const getMessage = useCallback( + (idx: number) => { + if ( + messages[idx].role === Role.AI && + idx === messages.length - 1 && + streamedMessage + ) { + return streamedMessage + } + + return messages[idx].content || "### Thinking..." + }, + [messages, streamedMessage], + ) + useEffect(() => { window.scrollTo({ top: document.body.scrollHeight, behavior: "smooth" }) }, []) @@ -49,19 +69,16 @@ export default function QueryForm({ workflowData }: WorkflowIdComponentProps) { > {messages.map((message, index) => (
- {message.role === Role.AI ? ( -
- -
- ) : ( -
- {message.content} -
- )} +
+ +
))} @@ -73,10 +90,10 @@ export default function QueryForm({ workflowData }: WorkflowIdComponentProps) { > - {!isLoading && + {!isMessageLoading && suggestions.map((suggestion, index) => (