From caf8bb39d860675c301d20ba8188bfa04f7de592 Mon Sep 17 00:00:00 2001 From: Alan Evans Date: Mon, 28 Sep 2020 11:48:09 -0300 Subject: [PATCH] Fix desktop sync with body-less messages. --- .../api/messages/SignalServiceDataMessage.java | 16 +++++++++++++++- .../api/messages/SignalServiceGroupV2.java | 4 ++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/libsignal/service/src/main/java/org/whispersystems/signalservice/api/messages/SignalServiceDataMessage.java b/libsignal/service/src/main/java/org/whispersystems/signalservice/api/messages/SignalServiceDataMessage.java index 3458a5391..50a2961a8 100644 --- a/libsignal/service/src/main/java/org/whispersystems/signalservice/api/messages/SignalServiceDataMessage.java +++ b/libsignal/service/src/main/java/org/whispersystems/signalservice/api/messages/SignalServiceDataMessage.java @@ -159,7 +159,21 @@ public class SignalServiceDataMessage { public boolean isGroupV2Update() { return isGroupV2Message() && - !body.isPresent(); + group.get().getGroupV2().get().hasSignedGroupChange() && + !hasRenderableContent(); + } + + /** Contains some user data that affects the conversation */ + public boolean hasRenderableContent() { + return attachments.isPresent() || + body.isPresent() || + quote.isPresent() || + contacts.isPresent() || + previews.isPresent() || + mentions.isPresent() || + sticker.isPresent() || + reaction.isPresent() || + remoteDelete.isPresent(); } public int getExpiresInSeconds() { diff --git a/libsignal/service/src/main/java/org/whispersystems/signalservice/api/messages/SignalServiceGroupV2.java b/libsignal/service/src/main/java/org/whispersystems/signalservice/api/messages/SignalServiceGroupV2.java index 1cefa2d3c..a4789a8d0 100644 --- a/libsignal/service/src/main/java/org/whispersystems/signalservice/api/messages/SignalServiceGroupV2.java +++ b/libsignal/service/src/main/java/org/whispersystems/signalservice/api/messages/SignalServiceGroupV2.java @@ -55,6 +55,10 @@ public final class SignalServiceGroupV2 { return signedGroupChange; } + public boolean hasSignedGroupChange() { + return signedGroupChange != null && signedGroupChange.length > 0; + } + public static Builder newBuilder(GroupMasterKey masterKey) { return new Builder(masterKey); }