diff --git a/web/app/components/workflow/nodes/tool/components/context-generate-modal/components/chat-view.tsx b/web/app/components/workflow/nodes/tool/components/context-generate-modal/components/chat-view.tsx index 06d2f361e9..fb2b737af3 100644 --- a/web/app/components/workflow/nodes/tool/components/context-generate-modal/components/chat-view.tsx +++ b/web/app/components/workflow/nodes/tool/components/context-generate-modal/components/chat-view.tsx @@ -4,7 +4,7 @@ import type { FormValue } from '@/app/components/header/account-setting/model-pr import type { TriggerProps } from '@/app/components/header/account-setting/model-provider-page/model-parameter-modal/trigger' import type { Model } from '@/types/app' import { RiArrowRightLine, RiSendPlaneLine } from '@remixicon/react' -import { useEffect, useRef } from 'react' +import { useEffect, useMemo, useRef } from 'react' import { useTranslation } from 'react-i18next' import Button from '@/app/components/base/button' import LoadingAnim from '@/app/components/base/chat/chat/loading-anim' @@ -59,6 +59,17 @@ const ChatView = ({ chatListRef.current.scrollTop = chatListRef.current.scrollHeight }, [isGenerating, promptMessages.length]) + const assistantVersionMap = useMemo(() => { + let assistantIndex = 0 + return promptMessages.map((message) => { + if (message.role !== 'assistant') + return null + const versionMeta = versionOptions[assistantIndex] ?? null + assistantIndex += 1 + return versionMeta + }) + }, [promptMessages, versionOptions]) + return ( <>
- {(() => { - let assistantIndex = -1 - // FIXME: delete these hard coded values assistant - return promptMessages.map((message, index) => { - if (message.role === 'assistant') - assistantIndex += 1 - const versionMeta = message.role === 'assistant' ? versionOptions[assistantIndex] : null - const isSelected = versionMeta?.index === currentVersionIndex - const assistantContent = message.content || defaultAssistantMessage - return ( -
- {message.role === 'user' - ? ( -
- {message.content} + {promptMessages.map((message, index) => { + const versionMeta = assistantVersionMap[index] + const isSelected = versionMeta?.index === currentVersionIndex + const assistantContent = message.content || defaultAssistantMessage + return ( +
+ {message.role === 'user' + ? ( +
+ {message.content} +
+ ) + : ( +
+
+ {assistantContent}
- ) - : ( -
-
- {assistantContent} -
- {versionMeta && ( - - )} -
- )} -
- ) - }) - })()} + {versionMeta && ( + + )} +
+ )} +
+ ) + })} {isGenerating && (