From 68d664f31953777a56c19f7c7723fc6400ccb034 Mon Sep 17 00:00:00 2001 From: Fahim Salam Chowdhury Date: Wed, 2 Nov 2022 19:26:52 +0600 Subject: [PATCH 1/3] 3081-r-Remove_mail_account_on_cancel_sync issue: https://gitlab.e.foundation/e/backlog/-/issues/3081 Remove mail account when user toggle off the mail sync switch --- .../android/settings/accounts/AccountSyncSettings.java | 10 ++++++++++ .../settings/accounts/MailAccountSyncHelper.java | 2 ++ 2 files changed, 12 insertions(+) diff --git a/src/com/android/settings/accounts/AccountSyncSettings.java b/src/com/android/settings/accounts/AccountSyncSettings.java index a56dc94c2a3..28c57ace32d 100644 --- a/src/com/android/settings/accounts/AccountSyncSettings.java +++ b/src/com/android/settings/accounts/AccountSyncSettings.java @@ -386,6 +386,16 @@ public class AccountSyncSettings extends AccountPreferenceBase { extras); } else { ContentResolver.cancelSyncAsUser(account, authority, mUserHandle.getIdentifier()); + cancelMailSync(account, authority); + } + } + + private void cancelMailSync(Account account, String authority) { + if (MailAccountSyncHelper.MAIL_SYNC_AUTHORITY.equals(authority)) { + Context context = getPrefContext().getApplicationContext(); + AccountManager accountManager = AccountManager.get(context); + String email = accountManager.getUserData(account, "email_address"); + MailAccountSyncHelper.getInstance().accountLoggedOut(context, email); } } diff --git a/src/com/android/settings/accounts/MailAccountSyncHelper.java b/src/com/android/settings/accounts/MailAccountSyncHelper.java index c48886752d3..6cd34da9610 100644 --- a/src/com/android/settings/accounts/MailAccountSyncHelper.java +++ b/src/com/android/settings/accounts/MailAccountSyncHelper.java @@ -24,6 +24,8 @@ import android.os.Build; public class MailAccountSyncHelper { + public static final String MAIL_SYNC_AUTHORITY = "foundation.e.mail.provider.AppContentProvider"; + private static final String MAIL_PACKAGE = "foundation.e.mail"; private static final String MAIL_RECEIVER_CLASS = "com.fsck.k9.account.AccountSyncReceiver"; private static final String ACTION_PREFIX = "foundation.e.accountmanager.account."; -- GitLab From b82dd1182a07f9b8084853c306443e9e30eff61f Mon Sep 17 00:00:00 2001 From: Fahim Salam Chowdhury Date: Tue, 8 Nov 2022 00:18:04 +0600 Subject: [PATCH 2/3] disable mail sync on sync switch toggle --- .../settings/accounts/AccountSyncSettings.java | 2 +- .../settings/accounts/MailAccountSyncHelper.java | 15 ++++++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/com/android/settings/accounts/AccountSyncSettings.java b/src/com/android/settings/accounts/AccountSyncSettings.java index 28c57ace32d..3a35680f135 100644 --- a/src/com/android/settings/accounts/AccountSyncSettings.java +++ b/src/com/android/settings/accounts/AccountSyncSettings.java @@ -395,7 +395,7 @@ public class AccountSyncSettings extends AccountPreferenceBase { Context context = getPrefContext().getApplicationContext(); AccountManager accountManager = AccountManager.get(context); String email = accountManager.getUserData(account, "email_address"); - MailAccountSyncHelper.getInstance().accountLoggedOut(context, email); + MailAccountSyncHelper.getInstance().disableSync(context, email); } } diff --git a/src/com/android/settings/accounts/MailAccountSyncHelper.java b/src/com/android/settings/accounts/MailAccountSyncHelper.java index 6cd34da9610..fc5fec2698d 100644 --- a/src/com/android/settings/accounts/MailAccountSyncHelper.java +++ b/src/com/android/settings/accounts/MailAccountSyncHelper.java @@ -29,6 +29,7 @@ public class MailAccountSyncHelper { private static final String MAIL_PACKAGE = "foundation.e.mail"; private static final String MAIL_RECEIVER_CLASS = "com.fsck.k9.account.AccountSyncReceiver"; private static final String ACTION_PREFIX = "foundation.e.accountmanager.account."; + private static final String ACCOUNT = "account"; private static MailAccountSyncHelper instance = null; @@ -42,12 +43,20 @@ public class MailAccountSyncHelper { } public void accountLoggedOut(Context applicationContext, String email) { - if (applicationContext == null || email == null || !email.contains("@")) { + sendBroadCast(applicationContext, email, "remove"); + } + + public void disableSync(Context applicationContext, String email) { + sendBroadCast(applicationContext, email, "disablesync"); + } + + private void sendBroadCast(Context applicationContext, String email, String action) { + if (applicationContext == null || email == null || !email.contains("@") || action == null) { return; } Intent intent = getIntent(); - intent.setAction(ACTION_PREFIX + "remove"); - intent.putExtra("account", email); + intent.setAction(ACTION_PREFIX + action); + intent.putExtra(ACCOUNT, email); applicationContext.sendBroadcast(intent); } -- GitLab From 26a79128bd442833dcccc1332fd2d33036d95788 Mon Sep 17 00:00:00 2001 From: Fahim Salam Chowdhury Date: Wed, 9 Nov 2022 08:49:19 +0000 Subject: [PATCH 3/3] Apply 3 suggestion(s) to 2 file(s) --- src/com/android/settings/accounts/AccountSyncSettings.java | 6 +++--- .../android/settings/accounts/MailAccountSyncHelper.java | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/com/android/settings/accounts/AccountSyncSettings.java b/src/com/android/settings/accounts/AccountSyncSettings.java index 3a35680f135..b5be9a1a9bc 100644 --- a/src/com/android/settings/accounts/AccountSyncSettings.java +++ b/src/com/android/settings/accounts/AccountSyncSettings.java @@ -392,9 +392,9 @@ public class AccountSyncSettings extends AccountPreferenceBase { private void cancelMailSync(Account account, String authority) { if (MailAccountSyncHelper.MAIL_SYNC_AUTHORITY.equals(authority)) { - Context context = getPrefContext().getApplicationContext(); - AccountManager accountManager = AccountManager.get(context); - String email = accountManager.getUserData(account, "email_address"); + final Context context = getPrefContext().getApplicationContext(); + final AccountManager accountManager = AccountManager.get(context); + final String email = accountManager.getUserData(account, "email_address"); MailAccountSyncHelper.getInstance().disableSync(context, email); } } diff --git a/src/com/android/settings/accounts/MailAccountSyncHelper.java b/src/com/android/settings/accounts/MailAccountSyncHelper.java index fc5fec2698d..1af8faa0043 100644 --- a/src/com/android/settings/accounts/MailAccountSyncHelper.java +++ b/src/com/android/settings/accounts/MailAccountSyncHelper.java @@ -51,10 +51,10 @@ public class MailAccountSyncHelper { } private void sendBroadCast(Context applicationContext, String email, String action) { - if (applicationContext == null || email == null || !email.contains("@") || action == null) { + if (applicationContext == null || email == null || !email.contains("@") || action == null || action.isEmpty()) { return; } - Intent intent = getIntent(); + final Intent intent = getIntent(); intent.setAction(ACTION_PREFIX + action); intent.putExtra(ACCOUNT, email); applicationContext.sendBroadcast(intent); -- GitLab