diff --git a/app/ui/legacy/src/main/java/com/fsck/k9/activity/setup/accountmanager/EeloAccountCreator.java b/app/ui/legacy/src/main/java/com/fsck/k9/activity/setup/accountmanager/EeloAccountCreator.java index 1de5ccc09ff2ec9a3d2266a524f273a4916012f4..2eb61d88fa022719a505ee1568a54c4b3712ecdd 100644 --- a/app/ui/legacy/src/main/java/com/fsck/k9/activity/setup/accountmanager/EeloAccountCreator.java +++ b/app/ui/legacy/src/main/java/com/fsck/k9/activity/setup/accountmanager/EeloAccountCreator.java @@ -18,6 +18,7 @@ package com.fsck.k9.activity.setup.accountmanager; import java.util.List; +import java.util.stream.Collectors; import android.accounts.AccountManager; import android.content.ContentResolver; @@ -65,11 +66,17 @@ public class EeloAccountCreator { List accounts = preferences.getAccounts(); deleteIncompleteAccounts(accounts, accountRemover); + // deleteIncompleteAccounts is asynchronous. + // The second time we call preferences.getAccounts() + // The accounts might not yet be removed + List finalAccounts = accounts.stream() + .filter(Account::isFinishedSetup) + .collect(Collectors.toList()); - loadEeloAccounts(context, accounts, accountManager, jobManager); + loadEeloAccounts(context, finalAccounts, accountManager, jobManager); AccountManagerConstants.INSTANCE.getOPENID_ACCOUNT_TYPES() - .forEach(accountType -> loadOpenIdAccounts(context, accountType, accounts, accountManager, jobManager)); + .forEach(accountType -> loadOpenIdAccounts(context, accountType, finalAccounts, accountManager, jobManager)); } catch (SecurityException e) { Timber.e(e, "Failed to load accounts from accountManager because of security violation"); }