@@ -26,7 +26,7 @@ export function ChatView({ onBack, onSwitchToMessages, mainContentRef, composerR
2626 const { t } = useTranslation ( )
2727 // Use useChatActive instead of useChat to avoid subscribing to the conversation list.
2828 // This prevents re-renders during background MAM sync of other conversations.
29- const { activeConversation, activeMessages, activeTypingUsers, sendReaction, sendCorrection, retractMessage, activeAnimation, sendEasterEgg, clearAnimation, clearFirstNewMessageId, updateLastSeenMessageId, activeMAMState, fetchOlderHistory } = useChatActive ( )
29+ const { activeConversation, activeMessages, activeTypingUsers, sendReaction, sendCorrection, retractMessage, retryMessage , activeAnimation, sendEasterEgg, clearAnimation, clearFirstNewMessageId, updateLastSeenMessageId, activeMAMState, fetchOlderHistory } = useChatActive ( )
3030 // Use useContactIdentities instead of useRoster() to avoid re-renders on
3131 // presence changes. ChatView only needs contact names and avatars for display.
3232 const contactsByJid = useContactIdentities ( )
@@ -275,6 +275,7 @@ export function ChatView({ onBack, onSwitchToMessages, mainContentRef, composerR
275275 activeReactionPickerMessageId = { activeReactionPickerMessageId }
276276 onReactionPickerChange = { handleReactionPickerChange }
277277 retractMessage = { retractMessage }
278+ retryMessage = { retryMessage }
278279 selectedMessageId = { selectedMessageId }
279280 hasKeyboardSelection = { hasKeyboardSelection }
280281 showToolbarForSelection = { showToolbarForSelection }
@@ -349,6 +350,7 @@ const ChatMessageList = memo(function ChatMessageList({
349350 activeReactionPickerMessageId,
350351 onReactionPickerChange,
351352 retractMessage,
353+ retryMessage,
352354 selectedMessageId,
353355 hasKeyboardSelection,
354356 showToolbarForSelection,
@@ -381,6 +383,7 @@ const ChatMessageList = memo(function ChatMessageList({
381383 activeReactionPickerMessageId : string | null
382384 onReactionPickerChange : ( messageId : string , isOpen : boolean ) => void
383385 retractMessage : ( conversationId : string , messageId : string ) => Promise < void >
386+ retryMessage : ( conversationId : string , messageId : string ) => Promise < void >
384387 selectedMessageId : string | null
385388 hasKeyboardSelection : boolean
386389 showToolbarForSelection : boolean
@@ -467,6 +470,7 @@ const ChatMessageList = memo(function ChatMessageList({
467470 hideToolbar = { isComposing || ( activeReactionPickerMessageId !== null && activeReactionPickerMessageId !== msg . id ) }
468471 onReactionPickerChange = { ( isOpen ) => onReactionPickerChange ( msg . id , isOpen ) }
469472 retractMessage = { retractMessage }
473+ retryMessage = { retryMessage }
470474 isSelected = { msg . id === selectedMessageId }
471475 hasKeyboardSelection = { hasKeyboardSelection }
472476 showToolbarForSelection = { showToolbarForSelection }
@@ -481,7 +485,7 @@ const ChatMessageList = memo(function ChatMessageList({
481485 ) , [
482486 ownAvatar , contactsByJid , ownNickname , conversationId , conversationType ,
483487 sendReaction , myBareJid , messagesById , onReply , onEdit , lastOutgoingMessageId , lastMessageId ,
484- isComposing , activeReactionPickerMessageId , onReactionPickerChange , retractMessage ,
488+ isComposing , activeReactionPickerMessageId , onReactionPickerChange , retractMessage , retryMessage ,
485489 selectedMessageId , hasKeyboardSelection , showToolbarForSelection , isDarkMode ,
486490 hoveredMessageId , handleMessageHover , handleMessageLeave , formatTime , effectiveTimeFormat
487491 ] )
@@ -533,6 +537,7 @@ interface ChatMessageBubbleProps {
533537 hideToolbar ?: boolean
534538 onReactionPickerChange ?: ( isOpen : boolean ) => void
535539 retractMessage : ( conversationId : string , messageId : string ) => Promise < void >
540+ retryMessage : ( conversationId : string , messageId : string ) => Promise < void >
536541 isSelected ?: boolean
537542 hasKeyboardSelection ?: boolean
538543 showToolbarForSelection ?: boolean
@@ -567,6 +572,7 @@ const ChatMessageBubble = memo(function ChatMessageBubble({
567572 hideToolbar,
568573 onReactionPickerChange,
569574 retractMessage,
575+ retryMessage,
570576 isSelected,
571577 hasKeyboardSelection,
572578 showToolbarForSelection,
@@ -690,6 +696,7 @@ const ChatMessageBubble = memo(function ChatMessageBubble({
690696 onReply = { ( ) => onReply ( message ) }
691697 onEdit = { ( ) => onEdit ( message ) }
692698 onDelete = { async ( ) => retractMessage ( conversationId , message . id ) }
699+ onRetry = { message . deliveryError ? ( ) => { void retryMessage ( conversationId , message . id ) } : undefined }
693700 onMediaLoad = { onMediaLoad }
694701 replyContext = { replyContext }
695702 onReactionPickerChange = { onReactionPickerChange }
0 commit comments