Browse SDKs · HarmonyOS
Platform
SDKsHarmonyOSEnterprise

Modify message

Edit the content of an already sent message and synchronize changes across participants.

Copy

Modifying a message replaces existing content on both the server and peer clients, unlike local-only content overwrites or deletions.

Code example

import sdk, {
  EventOnMessageEditedData,
  EventOnMessageModifiedData,
  IMMessage,
  ModifyMessageReq,
  ModifyMessageResp,
  OpenIMSDKEvent,
} from '@openimsdk/imsdk';

const editedMessage: IMMessage = cloneMessage(message);
if (editedMessage.textElem !== undefined) {
  editedMessage.textElem.content = editedText;
}
const request: ModifyMessageReq = {
  conversationID: conversationID,
  message: editedMessage,
};
const response: ModifyMessageResp = await sdk.modifyMessage(request);
replaceMessage(conversationID, response.message);

const handleMessageModified = (data: EventOnMessageModifiedData): void => {
  const targetConversationID = resolveMessageConversationID(data.message);
  replaceMessage(targetConversationID, data.message);
};
const unsubscribeMessageModified = sdk.on(
  OpenIMSDKEvent.EventOnMessageModified,
  handleMessageModified,
);

const handleMessageEdited = (data: EventOnMessageEditedData): void => {
  const targetConversationID = resolveMessageConversationID(data.message);
  replaceMessage(targetConversationID, data.message);
};
const unsubscribeMessageEdited = sdk.on(OpenIMSDKEvent.EventOnMessageEdited, handleMessageEdited);

export function removeMessageEditListeners(): void {
  unsubscribeMessageModified();
  unsubscribeMessageEdited();
}

Parameters

ParameterTypeRequiredDescription
conversationIDstringYesTarget conversation identifier.
messageIMMessageYesModified message object containing updated content elements.

Return value

Returns a Promise resolving to ModifyMessageResp:

PropertyTypeDescription
messageIMMessageUpdated message object acknowledged by the server.

State changes after the call

The modified message object must retain its original clientMsgID and mandatory metadata. Permitted sender identities, editing time windows, and editable message types are strictly validated by OpenIMServer. After the Promise resolves, immediately update the local message item; other clients receive updates via events.

Both EventOnMessageModified and EventOnMessageEdited deliver the latest IMMessage. Locate the conversation using conversationID, then update the message matching clientMsgID. These two events represent different underlying notification paths; do not assume a modification necessarily triggers both simultaneously. Remove listeners when tearing down the state layer.