From 924ee39445d032a141acbf78382c571fa2632483 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 4dda0e166fe..91e8b8693a6 100644 --- a/src/com/android/settings/accounts/AccountSyncSettings.java +++ b/src/com/android/settings/accounts/AccountSyncSettings.java @@ -370,6 +370,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 689966206c2b6325fc4d7adc0a21cb5ce141db9d 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 91e8b8693a6..280f46a47cd 100644 --- a/src/com/android/settings/accounts/AccountSyncSettings.java +++ b/src/com/android/settings/accounts/AccountSyncSettings.java @@ -379,7 +379,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 4b6f0cf48a8ab3185fcec1ecfdf82277b75b9fa2 Mon Sep 17 00:00:00 2001 From: Vincent Bourgmayer Date: Wed, 9 Nov 2022 08:42:41 +0000 Subject: [PATCH 3/3] Apply 2 suggestion(s) to 2 file(s) --- src/com/android/settings/accounts/AccountSyncSettings.java | 6 +++--- .../android/settings/accounts/MailAccountSyncHelper.java | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/com/android/settings/accounts/AccountSyncSettings.java b/src/com/android/settings/accounts/AccountSyncSettings.java index 280f46a47cd..c29fa8c615b 100644 --- a/src/com/android/settings/accounts/AccountSyncSettings.java +++ b/src/com/android/settings/accounts/AccountSyncSettings.java @@ -376,9 +376,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..ddb547b1fe3 100644 --- a/src/com/android/settings/accounts/MailAccountSyncHelper.java +++ b/src/com/android/settings/accounts/MailAccountSyncHelper.java @@ -54,7 +54,7 @@ public class MailAccountSyncHelper { if (applicationContext == null || email == null || !email.contains("@") || action == null) { return; } - Intent intent = getIntent(); + final Intent intent = getIntent(); intent.setAction(ACTION_PREFIX + action); intent.putExtra(ACCOUNT, email); applicationContext.sendBroadcast(intent); -- GitLab