From 05fef1188904531962b281d6343b240f8d1e9c37 Mon Sep 17 00:00:00 2001 From: jubb Date: Thu, 11 Feb 2021 14:20:12 +1100 Subject: [PATCH] fix: non-compatible handle messages requiring timestamp --- .../org/thoughtcrime/securesms/jobs/PushDecryptJob.java | 2 +- .../securesms/loki/protocol/MultiDeviceProtocol.kt | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushDecryptJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushDecryptJob.java index ca8bd7fdf3..4510b1eefb 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushDecryptJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushDecryptJob.java @@ -264,7 +264,7 @@ public class PushDecryptJob extends BaseJob implements InjectableType { SessionMetaProtocol.handleProfileUpdateIfNeeded(context, content); if (content.configurationMessageProto.isPresent()) { - MultiDeviceProtocol.handleConfigurationMessage(context, content.configurationMessageProto.get(), content.getSender()); + MultiDeviceProtocol.handleConfigurationMessage(context, content.configurationMessageProto.get(), content.getSender(), content.getTimestamp()); } else if (content.getDataMessage().isPresent()) { SignalServiceDataMessage message = content.getDataMessage().get(); boolean isMediaMessage = message.getAttachments().isPresent() || message.getQuote().isPresent() || message.getSharedContacts().isPresent() || message.getPreviews().isPresent() || message.getSticker().isPresent(); diff --git a/app/src/main/java/org/thoughtcrime/securesms/loki/protocol/MultiDeviceProtocol.kt b/app/src/main/java/org/thoughtcrime/securesms/loki/protocol/MultiDeviceProtocol.kt index a248d6647c..d0ba9c36e5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/loki/protocol/MultiDeviceProtocol.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/loki/protocol/MultiDeviceProtocol.kt @@ -5,6 +5,7 @@ import com.google.protobuf.ByteString import org.session.libsession.messaging.MessagingConfiguration import org.session.libsession.messaging.messages.control.ConfigurationMessage import org.session.libsession.utilities.TextSecurePreferences +import org.session.libsignal.libsignal.util.guava.Optional import org.session.libsignal.service.api.push.SignalServiceAddress import org.session.libsignal.service.internal.push.SignalServiceProtos import org.session.libsignal.service.loki.utilities.removing05PrefixIfNeeded @@ -33,7 +34,7 @@ object MultiDeviceProtocol { try { messageSender.sendMessage(0, address, udAccess.get().targetUnidentifiedAccess, Date().time, serializedMessage, false, configurationMessage.ttl.toInt(), false, - true, false, true, false) + true, false, true, Optional.absent()) TextSecurePreferences.setLastConfigurationSyncTime(context, now) } catch (e: Exception) { Log.d("Loki", "Failed to send configuration message due to error: $e.") @@ -51,14 +52,14 @@ object MultiDeviceProtocol { try { messageSender.sendMessage(0, address, udAccess.get().targetUnidentifiedAccess, Date().time, serializedMessage, false, configurationMessage.ttl.toInt(), false, - true, false, true, false) + true, false, true, Optional.absent()) } catch (e: Exception) { Log.d("Loki", "Failed to send configuration message due to error: $e.") } } @JvmStatic - fun handleConfigurationMessage(context: Context, content: SignalServiceProtos.Content, senderPublicKey: String) { + fun handleConfigurationMessage(context: Context, content: SignalServiceProtos.Content, senderPublicKey: String, timestamp: Long) { if (TextSecurePreferences.getConfigurationMessageSynced(context)) return val configurationMessage = ConfigurationMessage.fromProto(content) ?: return val userPublicKey = TextSecurePreferences.getLocalNumber(context) ?: return @@ -79,7 +80,7 @@ object MultiDeviceProtocol { closedGroupUpdate.addAllMembers(closedGroup.members.map { ByteString.copyFrom(Hex.fromStringCondensed(it)) }) closedGroupUpdate.addAllAdmins(closedGroup.admins.map { ByteString.copyFrom(Hex.fromStringCondensed(it)) }) - ClosedGroupsProtocolV2.handleNewClosedGroup(context, closedGroupUpdate.build(), userPublicKey) + ClosedGroupsProtocolV2.handleNewClosedGroup(context, closedGroupUpdate.build(), userPublicKey, timestamp) } val allOpenGroups = storage.getAllOpenGroups().map { it.value.server } for (openGroup in configurationMessage.openGroups) {