@@ -108,13 +108,15 @@ export type ChatMyMessageComponentProps = {
108
108
onInsertInlineImage ?: ( imageAttributes : Record < string , string > , messageId : string ) => void ;
109
109
/* @conditional -compile-remove(rich-text-editor-image-upload) */
110
110
inlineImagesWithProgress ?: AttachmentMetadataInProgress [ ] ;
111
+ // Optional callback called when editing is complete (submitted or cancelled).
112
+ onEditComplete ?: ( ) => void ;
111
113
} ;
112
114
113
115
/**
114
116
* @private
115
117
*/
116
118
export const ChatMyMessageComponent = ( props : ChatMyMessageComponentProps ) : JSX . Element => {
117
- const { onDeleteMessage, onSendMessage, message } = props ;
119
+ const { onDeleteMessage, onSendMessage, message, onEditComplete , onCancelEditMessage , onUpdateMessage } = props ;
118
120
const [ isEditing , setIsEditing ] = useState ( false ) ;
119
121
120
122
const onEditClick = useCallback ( ( ) => setIsEditing ( true ) , [ setIsEditing ] ) ;
@@ -169,28 +171,34 @@ export const ChatMyMessageComponent = (props: ChatMyMessageComponentProps): JSX.
169
171
if ( `attachments` in message && attachments ) {
170
172
message . attachments = attachments ;
171
173
}
172
- props . onUpdateMessage &&
173
- message . messageId &&
174
- ( await props . onUpdateMessage (
175
- message . messageId ,
176
- text ,
177
- /* @conditional -compile-remove(file-sharing-acs) */
178
- { attachments : attachments }
179
- ) ) ;
174
+ await onUpdateMessage ?.(
175
+ message . messageId ,
176
+ text ,
177
+ /* @conditional -compile-remove(file-sharing-acs) */
178
+ { attachments : attachments }
179
+ ) ;
180
180
setIsEditing ( false ) ;
181
+ onEditComplete ?.( ) ;
181
182
} ,
182
- [ message , props ]
183
+ [ message , onEditComplete , onUpdateMessage ]
183
184
) ;
185
+
186
+ const onCancelHandler = useCallback (
187
+ ( messageId : string ) => {
188
+ onCancelEditMessage ?.( messageId ) ;
189
+ setIsEditing ( false ) ;
190
+ onEditComplete ?.( ) ;
191
+ } ,
192
+ [ onEditComplete , onCancelEditMessage ]
193
+ ) ;
194
+
184
195
if ( isEditing && message . messageType === 'chat' ) {
185
196
return (
186
197
< ChatMessageComponentAsEditBoxPicker
187
198
message = { message }
188
199
strings = { props . strings }
189
200
onSubmit = { onSubmitHandler }
190
- onCancel = { ( messageId ) => {
191
- props . onCancelEditMessage && props . onCancelEditMessage ( messageId ) ;
192
- setIsEditing ( false ) ;
193
- } }
201
+ onCancel = { onCancelHandler }
194
202
/* @conditional -compile-remove(mention) */
195
203
mentionLookupOptions = { props . mentionOptions ?. lookupOptions }
196
204
/* @conditional -compile-remove(rich-text-editor) */
0 commit comments