From 7d7dbd7632a697a7167dff93c7a97b53af9b9aaf Mon Sep 17 00:00:00 2001 From: jubb Date: Tue, 23 Feb 2021 09:49:19 +1100 Subject: [PATCH] feat: add push notifying in the message sender to prevent self sends --- .../org/thoughtcrime/securesms/jobs/PushGroupUpdateJob.java | 2 +- .../org/thoughtcrime/securesms/jobs/PushMediaSendJob.java | 6 +++--- .../org/thoughtcrime/securesms/jobs/PushTextSendJob.java | 6 +++--- .../thoughtcrime/securesms/jobs/RequestGroupInfoJob.java | 2 +- .../libsignal/service/api/SignalServiceMessageSender.java | 5 +++-- 5 files changed, 11 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushGroupUpdateJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushGroupUpdateJob.java index a0594a0010..23b3f07a93 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushGroupUpdateJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushGroupUpdateJob.java @@ -127,7 +127,7 @@ public class PushGroupUpdateJob extends BaseJob implements InjectableType { messageSender.sendMessage(0, new SignalServiceAddress(source), UnidentifiedAccessUtil.getAccessFor(context, Recipient.from(context, Address.Companion.fromSerialized(source), false)), - message); + message, false); } @Override diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushMediaSendJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushMediaSendJob.java index e9d729f29e..46bdbb5a1d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushMediaSendJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushMediaSendJob.java @@ -287,14 +287,14 @@ public class PushMediaSendJob extends PushSendJob implements InjectableType { if (SessionMetaProtocol.shared.isNoteToSelf(address.getNumber())) { // Loki - Device link messages don't go through here - SendMessageResult result = messageSender.sendMessage(messageId, address, unidentifiedAccessPair, mediaMessage); + SendMessageResult result = messageSender.sendMessage(messageId, address, unidentifiedAccessPair, mediaMessage, true); if (result.getLokiAPIError() != null) { throw result.getLokiAPIError(); } else { return result.getSuccess().isUnidentified(); } } else { - SendMessageResult result = messageSender.sendMessage(messageId, address, unidentifiedAccessPair, mediaMessage); + SendMessageResult result = messageSender.sendMessage(messageId, address, unidentifiedAccessPair, mediaMessage, false); if (result.getLokiAPIError() != null) { throw result.getLokiAPIError(); } else { @@ -303,7 +303,7 @@ public class PushMediaSendJob extends PushSendJob implements InjectableType { try { // send to ourselves to sync multi-device Optional syncAccess = UnidentifiedAccessUtil.getAccessForSync(context); - SendMessageResult selfSendResult = messageSender.sendMessage(messageId, localAddress, syncAccess, mediaSelfSendMessage); + SendMessageResult selfSendResult = messageSender.sendMessage(messageId, localAddress, syncAccess, mediaSelfSendMessage, true); if (selfSendResult.getLokiAPIError() != null) { throw selfSendResult.getLokiAPIError(); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushTextSendJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushTextSendJob.java index abec311d1c..eb87722cd0 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushTextSendJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushTextSendJob.java @@ -226,14 +226,14 @@ public class PushTextSendJob extends PushSendJob implements InjectableType { if (SessionMetaProtocol.shared.isNoteToSelf(address.getNumber())) { // Loki - Device link messages don't go through here - SendMessageResult result = messageSender.sendMessage(messageId, address, unidentifiedAccess, textSecureMessage); + SendMessageResult result = messageSender.sendMessage(messageId, address, unidentifiedAccess, textSecureMessage, true); if (result.getLokiAPIError() != null) { throw result.getLokiAPIError(); } else { return result.getSuccess().isUnidentified(); } } else { - SendMessageResult result = messageSender.sendMessage(messageId, address, unidentifiedAccess, textSecureMessage); + SendMessageResult result = messageSender.sendMessage(messageId, address, unidentifiedAccess, textSecureMessage, false); if (result.getLokiAPIError() != null) { throw result.getLokiAPIError(); } else { @@ -242,7 +242,7 @@ public class PushTextSendJob extends PushSendJob implements InjectableType { try { // send to ourselves to sync multi-device Optional syncAccess = UnidentifiedAccessUtil.getAccessForSync(context); - SendMessageResult selfSendResult = messageSender.sendMessage(messageId, localAddress, syncAccess, textSecureSelfSendMessage); + SendMessageResult selfSendResult = messageSender.sendMessage(messageId, localAddress, syncAccess, textSecureSelfSendMessage, true); if (selfSendResult.getLokiAPIError() != null) { throw selfSendResult.getLokiAPIError(); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/RequestGroupInfoJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/RequestGroupInfoJob.java index ed0e50be30..d1059c08dd 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/RequestGroupInfoJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/RequestGroupInfoJob.java @@ -83,7 +83,7 @@ public class RequestGroupInfoJob extends BaseJob implements InjectableType { messageSender.sendMessage(0, new SignalServiceAddress(source), UnidentifiedAccessUtil.getAccessFor(context, Recipient.from(context, Address.Companion.fromExternal(context, source), false)), - message); + message, false); } @Override diff --git a/libsignal/src/main/java/org/session/libsignal/service/api/SignalServiceMessageSender.java b/libsignal/src/main/java/org/session/libsignal/service/api/SignalServiceMessageSender.java index ab402c93ca..cba21a64d8 100644 --- a/libsignal/src/main/java/org/session/libsignal/service/api/SignalServiceMessageSender.java +++ b/libsignal/src/main/java/org/session/libsignal/service/api/SignalServiceMessageSender.java @@ -241,14 +241,15 @@ public class SignalServiceMessageSender { public SendMessageResult sendMessage(long messageID, SignalServiceAddress recipient, Optional unidentifiedAccess, - SignalServiceDataMessage message) + SignalServiceDataMessage message, + boolean isSelfSend) throws IOException { byte[] content = createMessageContent(message, recipient); long timestamp = message.getTimestamp(); boolean useFallbackEncryption = SessionManagementProtocol.shared.shouldMessageUseFallbackEncryption(message, recipient.getNumber(), store); boolean isClosedGroup = message.group.isPresent() && message.group.get().getGroupType() == SignalServiceGroup.GroupType.SIGNAL; - SendMessageResult result = sendMessage(messageID, recipient, getTargetUnidentifiedAccess(unidentifiedAccess), timestamp, content, false, message.getTTL(), message.getDeviceLink().isPresent(), useFallbackEncryption, isClosedGroup, message.hasVisibleContent(), message.getSyncTarget()); + SendMessageResult result = sendMessage(messageID, recipient, getTargetUnidentifiedAccess(unidentifiedAccess), timestamp, content, false, message.getTTL(), message.getDeviceLink().isPresent(), useFallbackEncryption, isClosedGroup, message.hasVisibleContent() && !isSelfSend, message.getSyncTarget()); // // Loki - This shouldn't get invoked for note to self // boolean wouldSignalSendSyncMessage = (result.getSuccess() != null && result.getSuccess().isNeedsSync()) || unidentifiedAccess.isPresent();