Merge pull request #2748 from deltachat/adb/issue-2747

do oauth and provider info checks in background
This commit is contained in:
Asiel Díaz Benítez 2023-10-22 08:21:16 -04:00 committed by GitHub
commit 676e79a43f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -25,6 +25,7 @@ import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.content.res.Resources; import android.content.res.Resources;
import android.net.Uri; import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle; import android.os.Bundle;
import android.text.Editable; import android.text.Editable;
import android.text.TextUtils; import android.text.TextUtils;
@ -375,7 +376,7 @@ public class RegistrationActivity extends BaseActionBarActivity implements DcEve
return oauth2started; return oauth2started;
} }
private static class PrecheckOauth2AsyncTask extends ProgressDialogAsyncTask<Void, Void, Void> { private static class PrecheckOauth2AsyncTask extends AsyncTask<Void, Void, Void> {
private final WeakReference<RegistrationActivity> activityWeakReference; private final WeakReference<RegistrationActivity> activityWeakReference;
private final String email; private final String email;
private final SettableFuture<Boolean> oauth2started; private final SettableFuture<Boolean> oauth2started;
@ -383,14 +384,11 @@ public class RegistrationActivity extends BaseActionBarActivity implements DcEve
private @NonNull String oauth2url = ""; private @NonNull String oauth2url = "";
public PrecheckOauth2AsyncTask(RegistrationActivity activity, String email, SettableFuture<Boolean> oauth2started) { public PrecheckOauth2AsyncTask(RegistrationActivity activity, String email, SettableFuture<Boolean> oauth2started) {
super(activity, null, activity.getString(R.string.login_oauth2_checking_addr, email)); super();
this.activityWeakReference = new WeakReference<>(activity); this.activityWeakReference = new WeakReference<>(activity);
this.email = email; this.email = email;
this.oauth2started = oauth2started; this.oauth2started = oauth2started;
this.dcContext = DcHelper.getContext(activity); this.dcContext = DcHelper.getContext(activity);
setCancelable(dialog -> {
oauth2started.set(false);
});
} }
@Override @Override
protected Void doInBackground(Void... voids) { protected Void doInBackground(Void... voids) {
@ -428,42 +426,42 @@ public class RegistrationActivity extends BaseActionBarActivity implements DcEve
} }
private void updateProviderInfo() { private void updateProviderInfo() {
provider = getContext(this).getProviderFromEmailWithDns(emailInput.getText().toString()); Util.runOnBackground(() -> {
if (provider!=null) { provider = getContext(this).getProviderFromEmailWithDns(emailInput.getText().toString());
Resources res = getResources(); Util.runOnMain(() -> {
providerHint.setText(provider.getBeforeLoginHint()); if (provider!=null) {
switch (provider.getStatus()) { Resources res = getResources();
case DcProvider.DC_PROVIDER_STATUS_PREPARATION: providerHint.setText(provider.getBeforeLoginHint());
switch (provider.getStatus()) {
case DcProvider.DC_PROVIDER_STATUS_PREPARATION:
providerHint.setTextColor(res.getColor(R.color.provider_prep_fg)); providerHint.setTextColor(res.getColor(R.color.provider_prep_fg));
providerLink.setTextColor(res.getColor(R.color.provider_prep_fg)); providerLink.setTextColor(res.getColor(R.color.provider_prep_fg));
providerLayout.setBackgroundColor(res.getColor(R.color.provider_prep_bg)); providerLayout.setBackgroundColor(res.getColor(R.color.provider_prep_bg));
providerLayout.setVisibility(View.VISIBLE); providerLayout.setVisibility(View.VISIBLE);
break; break;
case DcProvider.DC_PROVIDER_STATUS_BROKEN: case DcProvider.DC_PROVIDER_STATUS_BROKEN:
providerHint.setTextColor(res.getColor(R.color.provider_broken_fg)); providerHint.setTextColor(res.getColor(R.color.provider_broken_fg));
providerLink.setTextColor(res.getColor(R.color.provider_broken_fg)); providerLink.setTextColor(res.getColor(R.color.provider_broken_fg));
providerLayout.setBackgroundColor(getResources().getColor(R.color.provider_broken_bg)); providerLayout.setBackgroundColor(getResources().getColor(R.color.provider_broken_bg));
providerLayout.setVisibility(View.VISIBLE); providerLayout.setVisibility(View.VISIBLE);
break; break;
default: default:
providerLayout.setVisibility(View.GONE); providerLayout.setVisibility(View.GONE);
break; break;
} }
} else { } else {
providerLayout.setVisibility(View.GONE); providerLayout.setVisibility(View.GONE);
} }
});
});
} }
private void maybeCleanProviderInfo() { private void maybeCleanProviderInfo() {
if (provider!=null && providerLayout.getVisibility()==View.VISIBLE) { if (provider!=null && providerLayout.getVisibility()==View.VISIBLE) {
DcProvider newProvider = getContext(this).getProviderFromEmailWithDns(emailInput.getText().toString()); provider = null;
if (newProvider == null providerLayout.setVisibility(View.GONE);
|| !newProvider.getOverviewPage().equals(provider.getOverviewPage())) {
provider = null;
providerLayout.setVisibility(View.GONE);
}
} }
} }