diff --git a/app/src/main/java/eu/faircode/email/ActivityError.java b/app/src/main/java/eu/faircode/email/ActivityError.java index 9c7f193f4b..5ba092a005 100644 --- a/app/src/main/java/eu/faircode/email/ActivityError.java +++ b/app/src/main/java/eu/faircode/email/ActivityError.java @@ -19,6 +19,8 @@ package eu.faircode.email; Copyright 2018-2023 by Marcel Bokhorst (M66B) */ +import static eu.faircode.email.ServiceAuthenticator.AUTH_TYPE_OAUTH; + import android.content.Intent; import android.os.Bundle; import android.text.method.LinkMovementMethod; @@ -68,23 +70,43 @@ public class ActivityError extends ActivityBase { String message = intent.getStringExtra("message"); String provider = intent.getStringExtra("provider"); long account = intent.getLongExtra("account", -1L); + long identity = intent.getLongExtra("identity", -1L); int protocol = intent.getIntExtra("protocol", -1); int auth_type = intent.getIntExtra("auth_type", -1); + boolean authorize = intent.getBooleanExtra("authorize", false); + String personal = intent.getStringExtra("personal"); + String address = intent.getStringExtra("address"); int faq = intent.getIntExtra("faq", -1); tvTitle.setText(title); tvMessage.setMovementMethod(LinkMovementMethod.getInstance()); tvMessage.setText(message); + btnPassword.setText(authorize ? R.string.title_setup_oauth_authorize : R.string.title_password); + btnPassword.setCompoundDrawablesRelativeWithIntrinsicBounds( + 0, 0, + authorize ? R.drawable.twotone_check_24 : R.drawable.twotone_edit_24, 0); + btnPassword.setVisibility(account < 0 ? View.GONE : View.VISIBLE); btnPassword.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - startActivity(new Intent(ActivityError.this, ActivitySetup.class) - .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK) - .putExtra("target", "accounts") - .putExtra("id", account) - .putExtra("protocol", protocol)); + if (authorize) + startActivity(new Intent(ActivityError.this, ActivitySetup.class) + .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK) + .putExtra("target", "oauth") + .putExtra("id", provider) + .putExtra("name", "Outlook") + .putExtra("askAccount", true) + .putExtra("askTenant", true) + .putExtra("personal", personal) + .putExtra("address", address)); + else + startActivity(new Intent(ActivityError.this, ActivitySetup.class) + .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK) + .putExtra("target", "accounts") + .putExtra("id", account) + .putExtra("protocol", protocol)); finish(); } }); diff --git a/app/src/main/java/eu/faircode/email/ActivitySetup.java b/app/src/main/java/eu/faircode/email/ActivitySetup.java index 5e80c321cb..57ec798d8c 100644 --- a/app/src/main/java/eu/faircode/email/ActivitySetup.java +++ b/app/src/main/java/eu/faircode/email/ActivitySetup.java @@ -264,7 +264,13 @@ public class ActivitySetup extends ActivityBase implements FragmentManager.OnBac onEditAccount(intent); else if ("identities".equals(target) && id > 0) onEditIdentity(intent); - else { + else if ("oauth".equals(target)) { + FragmentOAuth fragment = new FragmentOAuth(); + fragment.setArguments(intent.getExtras()); + FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); + fragmentTransaction.replace(R.id.content_frame, fragment).addToBackStack("quick"); + fragmentTransaction.commit(); + } else { FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); if ("accounts".equals(target)) fragmentTransaction.replace(R.id.content_frame, new FragmentAccounts()).addToBackStack("accounts"); diff --git a/app/src/main/java/eu/faircode/email/AdapterMessage.java b/app/src/main/java/eu/faircode/email/AdapterMessage.java index 61797cfa84..dc7a7052f8 100644 --- a/app/src/main/java/eu/faircode/email/AdapterMessage.java +++ b/app/src/main/java/eu/faircode/email/AdapterMessage.java @@ -4817,6 +4817,24 @@ public class AdapterMessage extends RecyclerView.Adapter @@ -69,13 +69,10 @@