撤回消息推送

This commit is contained in:
heavyrain2012
2021-09-20 08:21:16 +08:00
parent 9ca69d7318
commit edbed585ce
5 changed files with 29 additions and 8 deletions
@@ -2042,7 +2042,20 @@ public class MemoryMessagesStore implements IMessagesStore {
String recalledContent = json.toJSONString();
message = message.toBuilder().setContent(WFCMessage.MessageContent.newBuilder().setContent(operatorId).setType(80).setData(ByteString.copyFrom(String.valueOf(messageUid).getBytes())).setExtra(recalledContent)).build();
JSONObject pushData = new JSONObject();
pushData.put("messageUid", messageUid);
message = message.toBuilder().setContent(WFCMessage.MessageContent.newBuilder()
.setContent(operatorId)
.clearSearchableContent()
.clearPushContent()
.setPersistFlag(1)
.setExpireDuration(0)
.setMentionedType(0)
.setType(80)
.setData(ByteString.copyFrom(String.valueOf(messageUid).getBytes()))
.setPushData(pushData.toJSONString())
.setExtra(recalledContent)).build();
messageBundle.setMessage(message);
messageBundle.setFromClientId(clientId);
@@ -160,9 +160,9 @@ public class MessagesPublisher {
}
}
private void publish2Receivers(String sender, int conversationType, String target, int line, long messageHead, Collection<String> receivers, String pushContent, String pushData, String exceptClientId, int pullType, int messageContentType, long serverTime, int mentionType, List<String> mentionTargets, int persistFlag) {
private void publish2Receivers(String sender, int conversationType, String target, int line, long messageId, Collection<String> receivers, String pushContent, String pushData, String exceptClientId, int pullType, int messageContentType, long serverTime, int mentionType, List<String> mentionTargets, int persistFlag) {
if (persistFlag == Transparent) {
publishTransparentMessage2Receivers(messageHead, receivers, pullType, exceptClientId);
publishTransparentMessage2Receivers(messageId, receivers, pullType, exceptClientId);
return;
}
@@ -174,7 +174,7 @@ public class MessagesPublisher {
WFCMessage.Robot robot = m_messagesStore.getRobot(user);
if (robot != null && !StringUtil.isNullOrEmpty(robot.getCallback())) {
if (message == null) {
message = m_messagesStore.getMessage(messageHead);
message = m_messagesStore.getMessage(messageId);
}
final WFCMessage.Message finalMsg = message;
Server.getServer().getCallbackScheduler().execute(() -> {
@@ -191,9 +191,9 @@ public class MessagesPublisher {
}
long messageSeq;
if (pullType != ProtoConstants.PullType.Pull_ChatRoom) {
messageSeq = m_messagesStore.insertUserMessages(sender, conversationType, target, line, messageContentType, user, messageHead);
messageSeq = m_messagesStore.insertUserMessages(sender, conversationType, target, line, messageContentType, user, messageId);
} else {
messageSeq = m_messagesStore.insertChatroomMessages(user, line, messageHead);
messageSeq = m_messagesStore.insertChatroomMessages(user, line, messageId);
}
Collection<Session> sessions = m_sessionsStore.sessionForUser(user);
@@ -389,7 +389,7 @@ public class MessagesPublisher {
name = fd.getAlias();
}
}
this.messageSender.sendPush(sender, conversationType, target, line, messageHead, targetSession.getClientID(), pushContent, pushData, messageContentType, serverTime, name, targetName, targetSession.getUnReceivedMsgs(), curMentionType, isHiddenDetail, targetSession.getLanguage());
this.messageSender.sendPush(sender, conversationType, target, line, messageId, targetSession.getClientID(), pushContent, pushData, messageContentType, serverTime, name, targetName, targetSession.getUnReceivedMsgs(), curMentionType, isHiddenDetail, targetSession.getLanguage());
}
}
@@ -37,11 +37,12 @@ class PersistentQueueMessageSender {
this.connectionDescriptorStore = connectionDescriptorStore;
}
void sendPush(String sender, int conversationType, String target, int line, long messageHead, String deviceId, String pushContent, String pushData, int messageContentType, long serverTime, String senderName, String targetName, int unReceivedMsg, int mentionType, boolean isHiddenDetail, String language) {
void sendPush(String sender, int conversationType, String target, int line, long messageId, String deviceId, String pushContent, String pushData, int messageContentType, long serverTime, String senderName, String targetName, int unReceivedMsg, int mentionType, boolean isHiddenDetail, String language) {
LOG.info("Send push to {}, message from {}", deviceId, sender);
PushMessage pushMessage = new PushMessage(sender, conversationType, target, line, messageContentType, serverTime, senderName, targetName, unReceivedMsg, mentionType, isHiddenDetail, language);
pushMessage.pushContent = pushContent;
pushMessage.pushData = pushData;
pushMessage.messageId = messageId;
PushServer.getServer().pushMessage(pushMessage, deviceId, pushContent);
}