From 252ffa8ee42b2ed94da73ba2f1416664aa701520 Mon Sep 17 00:00:00 2001 From: M66B Date: Sat, 7 Dec 2019 21:08:43 +0100 Subject: [PATCH] Implemented external poll --- .../eu/faircode/email/ServiceExternal.java | 8 +++- .../java/eu/faircode/email/WorkerPoll.java | 42 ++++++++++--------- 2 files changed, 30 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/ServiceExternal.java b/app/src/main/java/eu/faircode/email/ServiceExternal.java index 97b064f36e..2e8f870f5e 100644 --- a/app/src/main/java/eu/faircode/email/ServiceExternal.java +++ b/app/src/main/java/eu/faircode/email/ServiceExternal.java @@ -76,7 +76,13 @@ public class ServiceExternal extends Service { String action = intent.getAction(); if (ACTION_POLL.equals(action)) { - // TODO: sync all + final Context context = getApplicationContext(); + executor.submit(new Runnable() { + @Override + public void run() { + WorkerPoll.sync(context); + } + }); return START_NOT_STICKY; } diff --git a/app/src/main/java/eu/faircode/email/WorkerPoll.java b/app/src/main/java/eu/faircode/email/WorkerPoll.java index 720484e1c5..2631f66ecc 100644 --- a/app/src/main/java/eu/faircode/email/WorkerPoll.java +++ b/app/src/main/java/eu/faircode/email/WorkerPoll.java @@ -45,25 +45,7 @@ public class WorkerPoll extends Worker { public Result doWork() { Log.i("Running " + getName()); - DB db = DB.getInstance(getApplicationContext()); - try { - db.beginTransaction(); - - List accounts = db.account().getSynchronizingAccounts(); - for (EntityAccount account : accounts) { - List folders = db.folder().getSynchronizingFolders(account.id); - if (folders.size() > 0) - Collections.sort(folders, folders.get(0).getComparator(getApplicationContext())); - for (EntityFolder folder : folders) - EntityOperation.sync(getApplicationContext(), folder.id, false); - } - - db.setTransactionSuccessful(); - } finally { - db.endTransaction(); - } - - ServiceSynchronize.eval(getApplicationContext(), false, "refresh/poll"); + sync(getApplicationContext()); return Result.success(); } @@ -94,6 +76,28 @@ public class WorkerPoll extends Worker { } } + static void sync(Context context) { + DB db = DB.getInstance(context); + try { + db.beginTransaction(); + + List accounts = db.account().getSynchronizingAccounts(); + for (EntityAccount account : accounts) { + List folders = db.folder().getSynchronizingFolders(account.id); + if (folders.size() > 0) + Collections.sort(folders, folders.get(0).getComparator(context)); + for (EntityFolder folder : folders) + EntityOperation.sync(context, folder.id, false); + } + + db.setTransactionSuccessful(); + } finally { + db.endTransaction(); + } + + ServiceSynchronize.eval(context, false, "refresh/poll"); + } + private static String getName() { return WorkerPoll.class.getSimpleName(); }