From 6d0cc9d3220d195cc017f8f0f132ee42372bbb72 Mon Sep 17 00:00:00 2001 From: M66B Date: Sat, 22 May 2021 14:23:54 +0200 Subject: [PATCH] External enable/disable by toggling on demand --- FAQ.md | 1 + app/src/main/java/eu/faircode/email/DaoAccount.java | 3 +++ app/src/main/java/eu/faircode/email/ServiceExternal.java | 7 +++---- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/FAQ.md b/FAQ.md index 68fb9976a4..230b282a55 100644 --- a/FAQ.md +++ b/FAQ.md @@ -2275,6 +2275,7 @@ To enable/disable a specific account: ``` Note that disabling an account will hide the account and all associated folders and messages. +From version 1.1600 an account will be disabled/enabled by setting the account to manual/automatic sync, so the folders and messages keep being accessible. To set the poll interval: diff --git a/app/src/main/java/eu/faircode/email/DaoAccount.java b/app/src/main/java/eu/faircode/email/DaoAccount.java index 0311b6669e..afb6748b2d 100644 --- a/app/src/main/java/eu/faircode/email/DaoAccount.java +++ b/app/src/main/java/eu/faircode/email/DaoAccount.java @@ -130,6 +130,9 @@ public interface DaoAccount { @Query("UPDATE account SET synchronize = :synchronize WHERE id = :id AND NOT (synchronize IS :synchronize)") int setAccountSynchronize(long id, boolean synchronize); + @Query("UPDATE account SET ondemand = :ondemand WHERE id = :id AND NOT (ondemand IS :ondemand)") + int setAccountOnDemand(long id, boolean ondemand); + @Query("UPDATE account SET `primary` = :primary WHERE id = :id AND NOT (`primary` IS :primary)") int setAccountPrimary(long id, boolean primary); diff --git a/app/src/main/java/eu/faircode/email/ServiceExternal.java b/app/src/main/java/eu/faircode/email/ServiceExternal.java index f974873ebb..4705294946 100644 --- a/app/src/main/java/eu/faircode/email/ServiceExternal.java +++ b/app/src/main/java/eu/faircode/email/ServiceExternal.java @@ -44,8 +44,6 @@ public class ServiceExternal extends Service { private static final String ACTION_INTERVAL = BuildConfig.APPLICATION_ID + ".INTERVAL"; private static final String ACTION_DISCONNECT_ME = BuildConfig.APPLICATION_ID + ".DISCONNECT.ME"; - static final int PI_WIDGET_ENABLE = 1; - // adb shell am start-foreground-service -a eu.faircode.email.POLL --es account Gmail // adb shell am start-foreground-service -a eu.faircode.email.ENABLE --es account Gmail // adb shell am start-foreground-service -a eu.faircode.email.DISABLE --es account Gmail @@ -192,9 +190,10 @@ public class ServiceExternal extends Service { if (account == null) throw new IllegalArgumentException("Account not found name=" + accountName); - db.account().setAccountSynchronize(account.id, enabled); - ServiceSynchronize.eval(context, "external account=" + accountName + " enabled=" + enabled); + db.account().setAccountOnDemand(account.id, !enabled); } + + ServiceSynchronize.eval(context, "external account=" + accountName + " enabled=" + enabled); } private static void disconnect(Context context, Intent intent) throws IOException, JSONException {