-优化了 Data、Scene 和 Team组件的逻辑,使用 currentIodMessage 替代复杂的条件判断- 改进了 IodRelevant 组件的动画和数据处理方式 - 调整了 Message 组件以支持数联网搜索功能 - 重构了 PlaygroundIodProvider,简化了上下文类型和数据处理 - 更新了数据库相关操作,使用新的 HistoryMessage 类型 - 新增了 IodDb 类来管理数联网连接配置
68 lines
2.2 KiB
TypeScript
68 lines
2.2 KiB
TypeScript
import React from "react"
|
|
import { useMessageOption } from "~/hooks/useMessageOption"
|
|
import { PlaygroundEmpty } from "./PlaygroundEmpty"
|
|
import { PlaygroundMessage } from "~/components/Common/Playground/Message"
|
|
import { MessageSourcePopup } from "@/components/Common/Playground/MessageSourcePopup"
|
|
|
|
export const PlaygroundChat = () => {
|
|
const {
|
|
messages,
|
|
streaming,
|
|
regenerateLastMessage,
|
|
isSearchingInternet,
|
|
editMessage,
|
|
ttsEnabled,
|
|
setCurrentMessageId,
|
|
} = useMessageOption()
|
|
const [isSourceOpen, setIsSourceOpen] = React.useState(false)
|
|
const [source, setSource] = React.useState<any>(null)
|
|
|
|
return (
|
|
<>
|
|
<div className="relative flex w-full flex-col items-center pb-4">
|
|
{messages.length === 0 && (
|
|
<div className="mt-3 w-full">
|
|
<PlaygroundEmpty />
|
|
</div>
|
|
)}
|
|
{messages.map((message, index) => (
|
|
<PlaygroundMessage
|
|
key={index}
|
|
id={message.id}
|
|
isBot={message.isBot}
|
|
message={message.message}
|
|
name={message.name}
|
|
images={message.images || []}
|
|
currentMessageIndex={index}
|
|
totalMessages={messages.length}
|
|
onRengerate={regenerateLastMessage}
|
|
isProcessing={streaming}
|
|
isSearchingInternet={isSearchingInternet}
|
|
webSources={message.webSources}
|
|
iodSources={message.iodSources}
|
|
onEditFormSubmit={(value, isSend) => {
|
|
editMessage(index, value, !message.isBot, isSend)
|
|
}}
|
|
onSourceClick={(data) => {
|
|
setSource(data)
|
|
setIsSourceOpen(true)
|
|
}}
|
|
isTTSEnabled={ttsEnabled}
|
|
generationInfo={message?.generationInfo}
|
|
isStreaming={streaming}
|
|
reasoningTimeTaken={message?.reasoning_time_taken}
|
|
setCurrentMessageId={setCurrentMessageId}
|
|
iodSearch={message.iodSearch}
|
|
/>
|
|
))}
|
|
</div>
|
|
{messages.length !== 0 && <div className="w-full pb-[157px]"></div>}
|
|
<MessageSourcePopup
|
|
open={isSourceOpen}
|
|
setOpen={setIsSourceOpen}
|
|
source={source}
|
|
/>
|
|
</>
|
|
)
|
|
}
|