Feat: Add agent log-sheet in cavas and log-sheet in share's page (#9072)

### What problem does this PR solve?

Feat: Add agent log-sheet in cavas and log-sheet in share's page #3221 

### Type of change

- [x] New Feature (non-breaking change which adds functionality)
This commit is contained in:
chanx
2025-07-28 16:48:46 +08:00
committed by GitHub
parent cc0227cf6e
commit 381f9df941
12 changed files with 520 additions and 256 deletions

View File

@ -11,6 +11,7 @@ import {
} from '@/hooks/use-agent-request';
import { cn } from '@/lib/utils';
import i18n from '@/locales/config';
import { useCacheChatLog } from '@/pages/agent/hooks/use-cache-chat-log';
import { useSendButtonDisabled } from '@/pages/chat/hooks';
import { buildMessageUuidWithRole } from '@/utils/chat';
import React, { forwardRef, useCallback, useMemo } from 'react';
@ -31,7 +32,13 @@ const ChatContainer = () => {
const { uploadCanvasFile, loading } =
useUploadCanvasFileWithProgress(conversationId);
const {
addEventList,
setCurrentMessageId,
currentEventListWithoutMessageById,
clearEventList,
currentMessageId,
} = useCacheChatLog();
const {
handlePressEnter,
handleInputChange,
@ -43,9 +50,22 @@ const ChatContainer = () => {
stopOutputMessage,
findReferenceByMessageId,
appendUploadResponseList,
} = useSendNextSharedMessage();
} = useSendNextSharedMessage(addEventList);
const sendDisabled = useSendButtonDisabled(value);
// useEffect(() => {
// if (derivedMessages.length) {
// const derivedMessagesFilter = derivedMessages.filter(
// (message) => message.role === MessageType.Assistant,
// );
// if (derivedMessagesFilter.length) {
// const message = derivedMessagesFilter[derivedMessagesFilter.length - 1];
// setCurrentMessageId(message.id);
// }
// }
// }, [derivedMessages, setCurrentMessageId]);
const useFetchAvatar = useMemo(() => {
return from === SharedFrom.Agent
? useFetchAgentAvatar
@ -81,6 +101,11 @@ const ChatContainer = () => {
return (
<MessageItem
visibleAvatar={visibleAvatar}
conversationId={conversationId}
currentEventListWithoutMessageById={
currentEventListWithoutMessageById
}
setCurrentMessageId={setCurrentMessageId}
key={buildMessageUuidWithRole(message)}
avatarDialog={avatarData.avatar}
item={message}
@ -103,7 +128,6 @@ const ChatContainer = () => {
</div>
<div ref={ref} />
</div>
<NextMessageInput
isShared
value={value}