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

Commit 94702080 authored by Fahim Salam Chowdhury's avatar Fahim Salam Chowdhury 👽
Browse files

3081-q-Disable_mail_account_sync_on_cancel_sync

parent 69598a1d
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -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)) {
            final Context context = getPrefContext().getApplicationContext();
            final AccountManager accountManager = AccountManager.get(context);
            final String email = accountManager.getUserData(account, "email_address");
            MailAccountSyncHelper.getInstance().disableSync(context, email);
        }
    }

+15 −4
Original line number Diff line number Diff line
@@ -24,9 +24,12 @@ 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.";
    private static final String ACCOUNT = "account";

    private static MailAccountSyncHelper instance = null;

@@ -40,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);
        final Intent intent = getIntent();
        intent.setAction(ACTION_PREFIX + action);
        intent.putExtra(ACCOUNT, email);
        applicationContext.sendBroadcast(intent);
    }