import { PromptIcon } from '@/assets/icon/Icon'; import CopyToClipboard from '@/components/copy-to-clipboard'; import { useSetModalState } from '@/hooks/common-hooks'; import { IRemoveMessageById } from '@/hooks/logic-hooks'; import { DeleteOutlined, DislikeOutlined, LikeOutlined, PauseCircleOutlined, SoundOutlined, SyncOutlined, } from '@ant-design/icons'; import { Radio, Tooltip } from 'antd'; import { useCallback } from 'react'; import { useTranslation } from 'react-i18next'; import FeedbackModal from './feedback-modal'; import { useRemoveMessage, useSendFeedback, useSpeech } from './hooks'; import PromptModal from './prompt-modal'; interface IProps { messageId: string; content: string; prompt?: string; showLikeButton: boolean; audioBinary?: string; showLoudspeaker?: boolean; } export const AssistantGroupButton = ({ messageId, content, prompt, audioBinary, showLikeButton, showLoudspeaker = true, }: IProps) => { const { visible, hideModal, showModal, onFeedbackOk, loading } = useSendFeedback(messageId); const { visible: promptVisible, hideModal: hidePromptModal, showModal: showPromptModal, } = useSetModalState(); const { t } = useTranslation(); const { handleRead, ref, isPlaying } = useSpeech(content, audioBinary); const handleLike = useCallback(() => { onFeedbackOk({ thumbup: true }); }, [onFeedbackOk]); return ( <> {showLoudspeaker && ( {isPlaying ? : } )} {showLikeButton && ( <> )} {prompt && ( )} {visible && ( )} {promptVisible && ( )} ); }; interface UserGroupButtonProps extends Partial { messageId: string; content: string; regenerateMessage?: () => void; sendLoading: boolean; } export const UserGroupButton = ({ content, messageId, sendLoading, removeMessageById, regenerateMessage, }: UserGroupButtonProps) => { const { onRemoveMessage, loading } = useRemoveMessage( messageId, removeMessageById, ); const { t } = useTranslation(); return ( {regenerateMessage && ( )} {removeMessageById && ( )} ); };