From eb6ecc59abbe8044f232d15bc048a85d80bc2852 Mon Sep 17 00:00:00 2001 From: Alan Evans Date: Fri, 10 Jul 2020 14:41:20 -0300 Subject: [PATCH] Consolidate duplicated group send job logic. --- .../securesms/jobs/GroupSendJobHelper.java | 46 +++++++++++++++++++ .../securesms/jobs/LeaveGroupJob.java | 19 +------- .../securesms/jobs/ProfileKeySendJob.java | 19 +------- .../jobs/PushGroupSilentUpdateSendJob.java | 18 +------- .../securesms/jobs/ReactionSendJob.java | 19 +------- .../securesms/jobs/RemoteDeleteSendJob.java | 18 +------- 6 files changed, 51 insertions(+), 88 deletions(-) create mode 100644 app/src/main/java/org/thoughtcrime/securesms/jobs/GroupSendJobHelper.java diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/GroupSendJobHelper.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/GroupSendJobHelper.java new file mode 100644 index 0000000000..2cb5a8abe0 --- /dev/null +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/GroupSendJobHelper.java @@ -0,0 +1,46 @@ +package org.thoughtcrime.securesms.jobs; + +import android.content.Context; + +import androidx.annotation.NonNull; + +import org.thoughtcrime.securesms.logging.Log; +import org.thoughtcrime.securesms.recipients.Recipient; +import org.whispersystems.signalservice.api.messages.SendMessageResult; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +final class GroupSendJobHelper { + + private static final String TAG = Log.tag(GroupSendJobHelper.class); + + private GroupSendJobHelper() { + } + + static List getCompletedSends(@NonNull Context context, @NonNull Collection results) { + List completions = new ArrayList<>(results.size()); + + for (SendMessageResult sendMessageResult : results) { + Recipient recipient = Recipient.externalPush(context, sendMessageResult.getAddress()); + + if (sendMessageResult.getIdentityFailure() != null) { + Log.w(TAG, "Identity failure for " + recipient.getId()); + } + + if (sendMessageResult.isUnregisteredFailure()) { + Log.w(TAG, "Unregistered failure for " + recipient.getId()); + } + + if (sendMessageResult.getSuccess() != null || + sendMessageResult.getIdentityFailure() != null || + sendMessageResult.isUnregisteredFailure()) + { + completions.add(recipient); + } + } + + return completions; + } +} diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/LeaveGroupJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/LeaveGroupJob.java index 686accaaac..7ea59f6ba0 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/LeaveGroupJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/LeaveGroupJob.java @@ -143,24 +143,7 @@ public class LeaveGroupJob extends BaseJob { List results = messageSender.sendMessage(addresses, unidentifiedAccess, false, dataMessage.build()); - Stream.of(results) - .filter(r -> r.getIdentityFailure() != null) - .map(SendMessageResult::getAddress) - .map(a -> Recipient.externalPush(context, a)) - .forEach(r -> Log.w(TAG, "Identity failure for " + r.getId())); - - Stream.of(results) - .filter(SendMessageResult::isUnregisteredFailure) - .map(SendMessageResult::getAddress) - .map(a -> Recipient.externalPush(context, a)) - .forEach(r -> Log.w(TAG, "Unregistered failure for " + r.getId())); - - - return Stream.of(results) - .filter(r -> r.getSuccess() != null || r.getIdentityFailure() != null || r.isUnregisteredFailure()) - .map(SendMessageResult::getAddress) - .map(a -> Recipient.externalPush(context, a)) - .toList(); + return GroupSendJobHelper.getCompletedSends(context, results); } public static class Factory implements Job.Factory { diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/ProfileKeySendJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/ProfileKeySendJob.java index 7423d2f111..1b819ce3f7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/ProfileKeySendJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/ProfileKeySendJob.java @@ -137,24 +137,7 @@ public class ProfileKeySendJob extends BaseJob { List results = messageSender.sendMessage(addresses, unidentifiedAccess, false, dataMessage.build()); - Stream.of(results) - .filter(r -> r.getIdentityFailure() != null) - .map(SendMessageResult::getAddress) - .map(a -> Recipient.externalPush(context, a)) - .forEach(r -> Log.w(TAG, "Identity failure for " + r.getId())); - - Stream.of(results) - .filter(SendMessageResult::isUnregisteredFailure) - .map(SendMessageResult::getAddress) - .map(a -> Recipient.externalPush(context, a)) - .forEach(r -> Log.w(TAG, "Unregistered failure for " + r.getId())); - - - return Stream.of(results) - .filter(r -> r.getSuccess() != null || r.getIdentityFailure() != null || r.isUnregisteredFailure()) - .map(SendMessageResult::getAddress) - .map(a -> Recipient.externalPush(context, a)) - .toList(); + return GroupSendJobHelper.getCompletedSends(context, results); } public static class Factory implements Job.Factory { diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushGroupSilentUpdateSendJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushGroupSilentUpdateSendJob.java index cd837a023b..8f4d6a1fe1 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushGroupSilentUpdateSendJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushGroupSilentUpdateSendJob.java @@ -165,23 +165,7 @@ public final class PushGroupSilentUpdateSendJob extends BaseJob { List results = messageSender.sendMessage(addresses, unidentifiedAccess, false, groupDataMessage); - Stream.of(results) - .filter(r -> r.getIdentityFailure() != null) - .map(SendMessageResult::getAddress) - .map(a -> Recipient.externalPush(context, a)) - .forEach(r -> Log.w(TAG, "Identity failure for " + r.getId())); - - Stream.of(results) - .filter(SendMessageResult::isUnregisteredFailure) - .map(SendMessageResult::getAddress) - .map(a -> Recipient.externalPush(context, a)) - .forEach(r -> Log.w(TAG, "Unregistered failure for " + r.getId())); - - return Stream.of(results) - .filter(r -> r.getSuccess() != null || r.getIdentityFailure() != null || r.isUnregisteredFailure()) - .map(SendMessageResult::getAddress) - .map(a -> Recipient.externalPush(context, a)) - .toList(); + return GroupSendJobHelper.getCompletedSends(context, results); } public static class Factory implements Job.Factory { diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/ReactionSendJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/ReactionSendJob.java index 7cb13110cb..1571fa23f7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/ReactionSendJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/ReactionSendJob.java @@ -222,24 +222,7 @@ public class ReactionSendJob extends BaseJob { List results = messageSender.sendMessage(addresses, unidentifiedAccess, false, dataMessage.build()); - Stream.of(results) - .filter(r -> r.getIdentityFailure() != null) - .map(SendMessageResult::getAddress) - .map(a -> Recipient.externalPush(context, a)) - .forEach(r -> Log.w(TAG, "Identity failure for " + r.getId())); - - Stream.of(results) - .filter(SendMessageResult::isUnregisteredFailure) - .map(SendMessageResult::getAddress) - .map(a -> Recipient.externalPush(context, a)) - .forEach(r -> Log.w(TAG, "Unregistered failure for " + r.getId())); - - - return Stream.of(results) - .filter(r -> r.getSuccess() != null || r.getIdentityFailure() != null || r.isUnregisteredFailure()) - .map(SendMessageResult::getAddress) - .map(a -> Recipient.externalPush(context, a)) - .toList(); + return GroupSendJobHelper.getCompletedSends(context, results); } private static SignalServiceDataMessage.Reaction buildReaction(@NonNull Context context, diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/RemoteDeleteSendJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/RemoteDeleteSendJob.java index 5954c9f7b6..e3c127304f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/RemoteDeleteSendJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/RemoteDeleteSendJob.java @@ -177,23 +177,7 @@ public class RemoteDeleteSendJob extends BaseJob { List results = messageSender.sendMessage(addresses, unidentifiedAccess, false, dataMessage.build()); - Stream.of(results) - .filter(r -> r.getIdentityFailure() != null) - .map(SendMessageResult::getAddress) - .map(a -> Recipient.externalPush(context, a)) - .forEach(r -> Log.w(TAG, "Identity failure for " + r.getId())); - - Stream.of(results) - .filter(SendMessageResult::isUnregisteredFailure) - .map(SendMessageResult::getAddress) - .map(a -> Recipient.externalPush(context, a)) - .forEach(r -> Log.w(TAG, "Unregistered failure for " + r.getId())); - - return Stream.of(results) - .filter(r -> r.getSuccess() != null || r.getIdentityFailure() != null || r.isUnregisteredFailure()) - .map(SendMessageResult::getAddress) - .map(a -> Recipient.externalPush(context, a)) - .toList(); + return GroupSendJobHelper.getCompletedSends(context, results); } public static class Factory implements Job.Factory {