From c7b7242effe80d5389245d86ff378fa41a891350 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Mon, 25 Nov 2019 10:19:43 -0500 Subject: [PATCH] Fix issues with blocking and MMS groups. Fixes #9218. Note that this removes MMS group blocking for now, just because it never really worked, and I don't want to hotfix in a feature. --- .../securesms/RecipientPreferenceActivity.java | 14 ++++++++++---- .../jobs/MultiDeviceBlockedUpdateJob.java | 4 ++-- .../securesms/recipients/RecipientUtil.java | 5 +++++ 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/org/thoughtcrime/securesms/RecipientPreferenceActivity.java b/src/org/thoughtcrime/securesms/RecipientPreferenceActivity.java index 1a7a07203c..08a40ce076 100644 --- a/src/org/thoughtcrime/securesms/RecipientPreferenceActivity.java +++ b/src/org/thoughtcrime/securesms/RecipientPreferenceActivity.java @@ -75,6 +75,7 @@ import org.thoughtcrime.securesms.preferences.widgets.ContactPreference; import org.thoughtcrime.securesms.recipients.LiveRecipient; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.RecipientId; +import org.thoughtcrime.securesms.recipients.RecipientUtil; import org.thoughtcrime.securesms.sms.MessageSender; import org.thoughtcrime.securesms.util.CommunicationActions; import org.thoughtcrime.securesms.util.Dialogs; @@ -400,6 +401,10 @@ public class RecipientPreferenceActivity extends PassphraseRequiredActionBarActi vibrateCallPreference.setSummary(vibrateCallSummary.first); vibrateCallPreference.setValueIndex(vibrateCallSummary.second); + blockPreference.setVisible(RecipientUtil.isBlockable(recipient)); + if (recipient.isBlocked()) blockPreference.setTitle(R.string.RecipientPreferenceActivity_unblock); + else blockPreference.setTitle(R.string.RecipientPreferenceActivity_block); + if (recipient.isLocalNumber()) { mutePreference.setVisible(false); customPreference.setVisible(false); @@ -412,7 +417,7 @@ public class RecipientPreferenceActivity extends PassphraseRequiredActionBarActi if (privacyCategory != null) privacyCategory.setVisible(false); if (divider != null) divider.setVisible(false); if (callCategory != null) callCategory.setVisible(false); - } if (recipient.isGroup()) { + } else if (recipient.isGroup()) { if (colorPreference != null) colorPreference.setVisible(false); if (identityPreference != null) identityPreference.setVisible(false); if (callCategory != null) callCategory.setVisible(false); @@ -433,9 +438,6 @@ public class RecipientPreferenceActivity extends PassphraseRequiredActionBarActi aboutPreference.setSecure(recipient.getRegistered() == RecipientDatabase.RegisteredState.REGISTERED); - if (recipient.isBlocked()) blockPreference.setTitle(R.string.RecipientPreferenceActivity_unblock); - else blockPreference.setTitle(R.string.RecipientPreferenceActivity_block); - IdentityUtil.getRemoteIdentityKey(getActivity(), recipient).addListener(new ListenableFuture.Listener>() { @Override public void onSuccess(Optional result) { @@ -456,6 +458,10 @@ public class RecipientPreferenceActivity extends PassphraseRequiredActionBarActi } }); } + + if (recipient.isMmsGroup() && privacyCategory != null) { + privacyCategory.setVisible(false); + } } private @NonNull String formatRecipient(@NonNull Recipient recipient) { diff --git a/src/org/thoughtcrime/securesms/jobs/MultiDeviceBlockedUpdateJob.java b/src/org/thoughtcrime/securesms/jobs/MultiDeviceBlockedUpdateJob.java index 84126cf473..146bbbb6a6 100644 --- a/src/org/thoughtcrime/securesms/jobs/MultiDeviceBlockedUpdateJob.java +++ b/src/org/thoughtcrime/securesms/jobs/MultiDeviceBlockedUpdateJob.java @@ -75,9 +75,9 @@ public class MultiDeviceBlockedUpdateJob extends BaseJob { Recipient recipient; while ((recipient = reader.getNext()) != null) { - if (recipient.isGroup()) { + if (recipient.isPushGroup()) { blockedGroups.add(GroupUtil.getDecodedId(recipient.requireGroupId())); - } else { + } else if (recipient.hasServiceIdentifier()) { blockedIndividuals.add(RecipientUtil.toSignalServiceAddress(context, recipient)); } } diff --git a/src/org/thoughtcrime/securesms/recipients/RecipientUtil.java b/src/org/thoughtcrime/securesms/recipients/RecipientUtil.java index 8769a38bf0..e2b7b2aa1f 100644 --- a/src/org/thoughtcrime/securesms/recipients/RecipientUtil.java +++ b/src/org/thoughtcrime/securesms/recipients/RecipientUtil.java @@ -49,4 +49,9 @@ public class RecipientUtil { return new SignalServiceAddress(Optional.fromNullable(recipient.getUuid().orNull()), Optional.fromNullable(recipient.resolve().getE164().orNull())); } + + public static boolean isBlockable(@NonNull Recipient recipient) { + Recipient resolved = recipient.resolve(); + return resolved.isPushGroup() || resolved.hasServiceIdentifier(); + } }