mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-09-13 12:07:57 +01:00
Allow account deletion to proceed when leaving a group fails.
This commit is contained in:
committed by
Cody Henthorne
parent
bcd37b6cef
commit
16803cd588
@@ -14,6 +14,8 @@ import org.thoughtcrime.securesms.database.SignalDatabase;
|
||||
import org.thoughtcrime.securesms.database.model.GroupRecord;
|
||||
import org.thoughtcrime.securesms.database.model.InAppPaymentSubscriberRecord;
|
||||
import org.thoughtcrime.securesms.dependencies.AppDependencies;
|
||||
import org.thoughtcrime.securesms.groups.GroupChangeBusyException;
|
||||
import org.thoughtcrime.securesms.groups.GroupChangeFailedException;
|
||||
import org.thoughtcrime.securesms.groups.GroupManager;
|
||||
import org.thoughtcrime.securesms.net.SignalNetwork;
|
||||
import org.signal.core.util.ServiceUtil;
|
||||
@@ -67,7 +69,8 @@ class DeleteAccountRepository {
|
||||
|
||||
Log.i(TAG, "deleteAccount: attempting to leave groups...");
|
||||
|
||||
int groupsLeft = 0;
|
||||
int groupsProcessed = 0;
|
||||
int groupsFailed = 0;
|
||||
try (GroupTable.Reader groups = SignalDatabase.groups().getGroups()) {
|
||||
GroupRecord groupRecord = groups.getNext();
|
||||
onDeleteAccountEvent.accept(new DeleteAccountEvent.LeaveGroupsProgress(groups.getCount(), 0));
|
||||
@@ -76,9 +79,14 @@ class DeleteAccountRepository {
|
||||
while (groupRecord != null) {
|
||||
if (groupRecord.getId().isPush() && groupRecord.isActive()) {
|
||||
if (!groupRecord.isV1Group()) {
|
||||
GroupManager.leaveGroup(AppDependencies.getApplication(), groupRecord.getId().requirePush(), true);
|
||||
try {
|
||||
GroupManager.leaveGroup(AppDependencies.getApplication(), groupRecord.getId().requirePush(), true);
|
||||
} catch (IOException | GroupChangeBusyException | GroupChangeFailedException e) {
|
||||
groupsFailed++;
|
||||
Log.w(TAG, "deleteAccount: failed to leave a group, continuing with the rest.", e);
|
||||
}
|
||||
}
|
||||
onDeleteAccountEvent.accept(new DeleteAccountEvent.LeaveGroupsProgress(groups.getCount(), ++groupsLeft));
|
||||
onDeleteAccountEvent.accept(new DeleteAccountEvent.LeaveGroupsProgress(groups.getCount(), ++groupsProcessed));
|
||||
}
|
||||
|
||||
groupRecord = groups.getNext();
|
||||
@@ -91,7 +99,11 @@ class DeleteAccountRepository {
|
||||
return;
|
||||
}
|
||||
|
||||
Log.i(TAG, "deleteAccount: successfully left all groups.");
|
||||
if (groupsFailed > 0) {
|
||||
Log.w(TAG, "deleteAccount: failed to leave " + groupsFailed + " group(s). Continuing with deletion anyway.");
|
||||
} else {
|
||||
Log.i(TAG, "deleteAccount: successfully left all groups.");
|
||||
}
|
||||
Log.i(TAG, "deleteAccount: attempting to delete account from server...");
|
||||
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user