message log

This commit is contained in:
JzoNg
2024-03-17 14:05:56 +08:00
parent 9638885a67
commit a2e30e6aa9
5 changed files with 90 additions and 4 deletions

View File

@ -27,6 +27,7 @@ import Button from '@/app/components/base/button'
import { StopCircle } from '@/app/components/base/icons/src/vender/solid/mediaAndDevices'
import PromptLogModal from '@/app/components/base/prompt-log-modal'
import { useStore as useAppStore } from '@/app/components/app/store'
import MessageLogModal from '@/app/components/base/message-log-modal'
export type ChatProps = {
chatList: ChatItem[]
@ -75,7 +76,7 @@ const Chat: FC<ChatProps> = ({
onFeedback,
}) => {
const { t } = useTranslation()
const { currentLogItem, setCurrentLogItem, showPromptLogModal, setShowPromptLogModal } = useAppStore()
const { currentLogItem, setCurrentLogItem, showPromptLogModal, setShowPromptLogModal, showMessageLogModal, setShowMessageLogModal } = useAppStore()
const [width, setWidth] = useState(0)
const chatContainerRef = useRef<HTMLDivElement>(null)
const chatContainerInnerRef = useRef<HTMLDivElement>(null)
@ -233,6 +234,17 @@ const Chat: FC<ChatProps> = ({
}}
/>
)}
{showMessageLogModal && (
<MessageLogModal
fixedWidth
width={width}
currentLogItem={currentLogItem}
onCancel={() => {
setCurrentLogItem()
setShowMessageLogModal(false)
}}
/>
)}
</div>
</ChatContextProvider>
)

View File

@ -0,0 +1,56 @@
import type { FC } from 'react'
import { useTranslation } from 'react-i18next'
import cn from 'classnames'
import { useEffect, useRef, useState } from 'react'
import { useClickAway } from 'ahooks'
import { XClose } from '@/app/components/base/icons/src/vender/line/general'
import type { IChatItem } from '@/app/components/app/chat/type'
import Run from '@/app/components/workflow/run'
type MessageLogModalProps = {
currentLogItem?: IChatItem
width: number
fixedWidth?: boolean
onCancel: () => void
}
const MessageLogModal: FC<MessageLogModalProps> = ({
currentLogItem,
width,
fixedWidth,
onCancel,
}) => {
const { t } = useTranslation()
const ref = useRef(null)
const [mounted, setMounted] = useState(false)
useClickAway(() => {
if (mounted)
onCancel()
}, ref)
useEffect(() => {
setMounted(true)
}, [])
if (!currentLogItem || !currentLogItem.workflow_run_id)
return null
return (
<div
className={cn('fixed top-16 bottom-2 flex flex-col py-3 bg-white border-[0.5px] border-gray-200 rounded-xl shadow-xl z-10')}
style={{
width: fixedWidth ? 400 : width,
left: fixedWidth ? `${8 + width - 400}px` : '8px',
}}
ref={ref}
>
<h1 className='shrink-0 px-4 py-1 text-md font-semibold text-gray-900'>{t('appLog.runDetail.title')}</h1>
<span className='absolute right-3 top-4 p-1 cursor-pointer z-20' onClick={onCancel}>
<XClose className='w-4 h-4 text-gray-500' />
</span>
<Run runID={currentLogItem.workflow_run_id}/>
</div>
)
}
export default MessageLogModal