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.
master
Greyson Parrelli 2019-11-25 10:19:43 -05:00
parent 77c687efcf
commit c7b7242eff
3 changed files with 17 additions and 6 deletions

View File

@ -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<Optional<IdentityRecord>>() {
@Override
public void onSuccess(Optional<IdentityRecord> 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) {

View File

@ -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));
}
}

View File

@ -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();
}
}