Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fa3458f9 authored by cketti's avatar cketti
Browse files

Make mail check blocking when called from MailSyncJob

parent 49917278
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@ import java.util.Set;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArraySet;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
@@ -2403,6 +2404,25 @@ public class MessagingController {
        context.startActivity(chooserIntent);
    }

    public void checkMailBlocking(Account account) {
        final CountDownLatch latch = new CountDownLatch(1);
        checkMail(context, account, true, false, new SimpleMessagingListener() {
            @Override
            public void checkMailFinished(Context context, Account account) {
                latch.countDown();
            }
        });

        Timber.v("checkMailBlocking(%s) about to await latch release", account.getDescription());

        try {
            latch.await();
            Timber.v("checkMailBlocking(%s) got latch release", account.getDescription());
        } catch (Exception e) {
            Timber.e(e, "Interrupted while awaiting latch release");
        }
    }

    /**
     * Checks mail for one or multiple accounts. If account is null all accounts
     * are checked.
+2 −8
Original line number Diff line number Diff line
@@ -16,13 +16,7 @@ class MailSyncJob(
                ?.let { accountUuid ->

                    preferences.getAccount(accountUuid)?.let { account ->
                        messagingController.checkMail(
                                context,
                                account,
                                false,
                                false,
                                null
                        )
                        messagingController.checkMailBlocking(account)
                    }
                }