public void patchMessage(AVIMMessage oldMessage, AVIMMessage newMessage, AVIMMessage recallMessage, Conversation.AVIMOperation operation, int requestId) { if (!checkSessionStatus(operation, requestId)) { return; } session.conversationOperationCache.offer(Operation.getOperation( operation.getCode(), session.getSelfPeerId(), conversationId, requestId)); if (operation.equals(AVIMOperation.CONVERSATION_RECALL_MESSAGE)) { String messageId = recallMessage.getMessageId(); long timeStamp = recallMessage.getTimestamp(); AVConnectionManager.getInstance().sendPacket( MessagePatchModifyPacket.getMessagePatchPacketForRecall(session.getSelfPeerId(), conversationId, messageId, timeStamp, requestId)); } else if (operation.equals(AVIMOperation.CONVERSATION_UPDATE_MESSAGE)){ String messageId = oldMessage.getMessageId(); long timeStamp = oldMessage.getTimestamp(); String data = newMessage.getContent(); boolean mentionAll = newMessage.isMentionAll(); List<String> mentionList = newMessage.getMentionList(); byte[] binaryData = null; if (newMessage instanceof AVIMBinaryMessage) { binaryData = ((AVIMBinaryMessage) newMessage).getBytes(); } AVConnectionManager.getInstance().sendPacket(MessagePatchModifyPacket.getMessagePatchPacketForUpdate(session.getSelfPeerId(), conversationId, messageId, data, binaryData, mentionAll, mentionList, timeStamp, requestId)); } }