diff --git a/app/src/main/java/eu/faircode/email/FragmentMessages.java b/app/src/main/java/eu/faircode/email/FragmentMessages.java index a919f06e69..40c6c259c5 100644 --- a/app/src/main/java/eu/faircode/email/FragmentMessages.java +++ b/app/src/main/java/eu/faircode/email/FragmentMessages.java @@ -4355,7 +4355,8 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. if (!checkDoze()) if (!checkReporting()) if (!checkReview()) - checkFingerprint(); + if (!checkFingerprint()) + checkGmail(); prefs.registerOnSharedPreferenceChangeListener(this); onSharedPreferenceChanged(prefs, "pro"); @@ -4586,6 +4587,67 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. return true; } + private boolean checkGmail() { + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext()); + if (prefs.getBoolean("gmail_checked", false)) + return false; + + new SimpleTask>() { + @Override + protected List onExecute(Context context, Bundle args) throws Throwable { + DB db = DB.getInstance(context); + return db.account().getAccounts(); + } + + @Override + protected void onExecuted(Bundle args, List accounts) { + int oauth = 0; + int passwd = 0; + if (accounts != null) + for (EntityAccount account : accounts) + if (account.isGmail()) + if (account.auth_type == ServiceAuthenticator.AUTH_TYPE_OAUTH) + oauth++; + else if (account.auth_type == ServiceAuthenticator.AUTH_TYPE_PASSWORD) + passwd++; + + if (oauth + passwd == 0) { + prefs.edit().putBoolean("gmail_checked", true).apply(); + return; + } + + final int resid = (passwd > 0 + ? R.string.title_check_gmail_password + : R.string.title_check_gmail_oauth); + final Snackbar snackbar = Snackbar.make(view, resid, Snackbar.LENGTH_INDEFINITE) + .setGestureInsetBottomIgnored(true); + snackbar.setAction(passwd > 0 ? R.string.title_info : android.R.string.ok, new View.OnClickListener() { + @Override + public void onClick(View v) { + snackbar.dismiss(); + if (resid == R.string.title_check_gmail_password) + Helper.viewFAQ(v.getContext(), 6); + prefs.edit().putBoolean("gmail_checked", true).apply(); + } + }); + snackbar.addCallback(new Snackbar.Callback() { + @Override + public void onDismissed(Snackbar transientBottomBar, int event) { + prefs.edit().putBoolean("gmail_checked", true).apply(); + } + }); + snackbar.show(); + } + + @Override + protected void onException(Bundle args, Throwable ex) { + Log.e(ex); + } + }.execute(this, new Bundle(), "gmail:check"); + + return true; + } + @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.menu_messages, menu); diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java index 0df42c621e..74bc9f1eb8 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java @@ -225,7 +225,8 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc "raw_asked", "all_read_asked", "delete_asked", "cc_bcc", "inline_image_hint", "compose_reference", "send_dialog", "setup_reminder", "setup_advanced", - "signature_images_hint" + "signature_images_hint", + "gmail_checked" }; @Override diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index c04583b4e7..53adb56f70 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -320,6 +320,9 @@ Show images Confirm links + Your Gmail accounts will continue to work after May 30, 2022 + Some of your Gmail accounts may stop working after May 30, 2022 + More advanced options You are navigating to the more advanced options.