From eba3c55ec82234ad0713af4df91ebe2d44fb7b08 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Mon, 30 Aug 2021 11:49:43 -0400 Subject: [PATCH] Fix issue where you couldn't delete a blocked announcement group. --- .../messagerequests/MessageRequestRepository.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/messagerequests/MessageRequestRepository.java b/app/src/main/java/org/thoughtcrime/securesms/messagerequests/MessageRequestRepository.java index 600e2e0b86..899ea9778f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messagerequests/MessageRequestRepository.java +++ b/app/src/main/java/org/thoughtcrime/securesms/messagerequests/MessageRequestRepository.java @@ -33,6 +33,7 @@ import org.thoughtcrime.securesms.sms.MessageSender; import org.thoughtcrime.securesms.util.FeatureFlags; import org.thoughtcrime.securesms.util.TextSecurePreferences; import org.whispersystems.libsignal.util.guava.Optional; +import org.whispersystems.signalservice.internal.push.exceptions.GroupPatchNotAcceptedException; import java.io.IOException; import java.util.List; @@ -177,7 +178,15 @@ final class MessageRequestRepository { if (resolved.isGroup() && resolved.requireGroupId().isPush()) { try { GroupManager.leaveGroupFromBlockOrMessageRequest(context, resolved.requireGroupId().requirePush()); - } catch (GroupChangeException | IOException e) { + } catch (GroupChangeException | GroupPatchNotAcceptedException e) { + if (DatabaseFactory.getGroupDatabase(context).isCurrentMember(resolved.requireGroupId().requirePush(), Recipient.self().getId())) { + Log.w(TAG, "Failed to leave group, and we're still a member.", e); + error.onError(GroupChangeFailureReason.fromException(e)); + return; + } else { + Log.w(TAG, "Failed to leave group, but we're not a member, so ignoring."); + } + } catch (IOException e) { Log.w(TAG, e); error.onError(GroupChangeFailureReason.fromException(e)); return;