feat(chat): show revert button on all user messages
Remove restriction preventing revert on first user message Simplify message props by removing isFirstMessage flag
This commit is contained in:
@@ -66,7 +66,6 @@ interface ChatMessageProps {
|
||||
scrollToBottom?: (options?: { instant?: boolean; force?: boolean }) => void;
|
||||
isPendingAnchor?: boolean;
|
||||
turnGroupingContext?: TurnGroupingContext;
|
||||
isFirstMessage?: boolean;
|
||||
}
|
||||
|
||||
const ChatMessage: React.FC<ChatMessageProps> = ({
|
||||
@@ -77,7 +76,6 @@ const ChatMessage: React.FC<ChatMessageProps> = ({
|
||||
animationHandlers,
|
||||
isPendingAnchor = false,
|
||||
turnGroupingContext,
|
||||
isFirstMessage = false,
|
||||
}) => {
|
||||
const { isMobile, hasTouchInput } = useDeviceInfo();
|
||||
const { currentTheme } = useThemeSystem();
|
||||
@@ -790,7 +788,6 @@ const ChatMessage: React.FC<ChatMessageProps> = ({
|
||||
onAuxiliaryContentComplete={handleAuxiliaryContentComplete}
|
||||
agentMention={agentMention}
|
||||
onRevert={handleRevert}
|
||||
isFirstMessage={isFirstMessage}
|
||||
errorMessage={assistantErrorText}
|
||||
/>
|
||||
</div>
|
||||
|
||||
@@ -80,26 +80,19 @@ const MessageList: React.FC<MessageListProps> = ({
|
||||
)}
|
||||
|
||||
<div className="flex flex-col">
|
||||
{displayMessages.map((message, index) => {
|
||||
// Check if this is the first user message
|
||||
const isFirstUserMessage = message.info.role === 'user' &&
|
||||
!displayMessages.slice(0, index).some((m) => m.info.role === 'user');
|
||||
|
||||
return (
|
||||
<ChatMessage
|
||||
key={message.info.id}
|
||||
message={message}
|
||||
previousMessage={index > 0 ? displayMessages[index - 1] : undefined}
|
||||
nextMessage={index < displayMessages.length - 1 ? displayMessages[index + 1] : undefined}
|
||||
onContentChange={onMessageContentChange}
|
||||
animationHandlers={getAnimationHandlers(message.info.id)}
|
||||
scrollToBottom={scrollToBottom}
|
||||
isPendingAnchor={pendingAnchorId === message.info.id}
|
||||
turnGroupingContext={getContextForMessage(message.info.id)}
|
||||
isFirstMessage={isFirstUserMessage}
|
||||
/>
|
||||
);
|
||||
})}
|
||||
{displayMessages.map((message, index) => (
|
||||
<ChatMessage
|
||||
key={message.info.id}
|
||||
message={message}
|
||||
previousMessage={index > 0 ? displayMessages[index - 1] : undefined}
|
||||
nextMessage={index < displayMessages.length - 1 ? displayMessages[index + 1] : undefined}
|
||||
onContentChange={onMessageContentChange}
|
||||
animationHandlers={getAnimationHandlers(message.info.id)}
|
||||
scrollToBottom={scrollToBottom}
|
||||
isPendingAnchor={pendingAnchorId === message.info.id}
|
||||
turnGroupingContext={getContextForMessage(message.info.id)}
|
||||
/>
|
||||
))}
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
@@ -133,7 +133,6 @@ interface MessageBodyProps {
|
||||
agentMention?: AgentMentionInfo;
|
||||
turnGroupingContext?: TurnGroupingContext;
|
||||
onRevert?: () => void;
|
||||
isFirstMessage?: boolean;
|
||||
errorMessage?: string;
|
||||
}
|
||||
|
||||
@@ -148,8 +147,7 @@ const UserMessageBody: React.FC<{
|
||||
onShowPopup: (content: ToolPopupContent) => void;
|
||||
agentMention?: AgentMentionInfo;
|
||||
onRevert?: () => void;
|
||||
isFirstMessage?: boolean;
|
||||
}> = ({ messageId, parts, isMobile, hasTouchInput, hasTextContent, onCopyMessage, copiedMessage, onShowPopup, agentMention, onRevert, isFirstMessage }) => {
|
||||
}> = ({ messageId, parts, isMobile, hasTouchInput, hasTextContent, onCopyMessage, copiedMessage, onShowPopup, agentMention, onRevert }) => {
|
||||
const [copyHintVisible, setCopyHintVisible] = React.useState(false);
|
||||
const copyHintTimeoutRef = React.useRef<number | null>(null);
|
||||
|
||||
@@ -241,12 +239,12 @@ const UserMessageBody: React.FC<{
|
||||
})}
|
||||
</div>
|
||||
<MessageFilesDisplay files={parts} onShowPopup={onShowPopup} />
|
||||
{(canCopyMessage && hasCopyableText) || (onRevert && !isFirstMessage) ? (
|
||||
{(canCopyMessage && hasCopyableText) || onRevert ? (
|
||||
<div className={cn(
|
||||
"mt-1 flex items-center justify-end gap-2 opacity-0 pointer-events-none transition-opacity duration-150 group-hover/message:opacity-100 group-hover/message:pointer-events-auto focus-within:opacity-100 focus-within:pointer-events-auto",
|
||||
copyHintVisible && "opacity-100 pointer-events-auto"
|
||||
)}>
|
||||
{onRevert && !isFirstMessage && (
|
||||
{onRevert && (
|
||||
<Tooltip delayDuration={1000}>
|
||||
<TooltipTrigger asChild>
|
||||
<Button
|
||||
@@ -1228,7 +1226,6 @@ const MessageBody: React.FC<MessageBodyProps> = ({ isUser, ...props }) => {
|
||||
onShowPopup={props.onShowPopup}
|
||||
agentMention={props.agentMention}
|
||||
onRevert={props.onRevert}
|
||||
isFirstMessage={props.isFirstMessage}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user