导航菜单

页面标题

页面副标题

Delta Chat v1.58.3 - RegistrationActivity.java 源代码

正在查看: Delta Chat v1.58.3 应用的 RegistrationActivity.java JAVA 源代码文件

本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。


package org.thoughtcrime.securesms;

import android.app.Activity;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.res.Resources;
import android.net.Uri;
import android.os.AsyncTask;
import android.text.TextUtils;
import android.util.Patterns;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageView;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.widget.SwitchCompat;
import androidx.constraintlayout.widget.Group;
import com.b44t.messenger.DcContext;
import com.b44t.messenger.DcEvent;
import com.b44t.messenger.DcProvider;
import com.b44t.messenger.rpc.EnteredLoginParam;
import com.b44t.messenger.rpc.RpcException;
import com.b44t.messenger.util.concurrent.ListenableFuture;
import com.b44t.messenger.util.concurrent.SettableFuture;
import com.google.android.material.textfield.TextInputEditText;
import java.lang.ref.WeakReference;
import java.util.concurrent.ExecutionException;
import org.thoughtcrime.securesms.RegistrationActivity;
import org.thoughtcrime.securesms.connect.DcEventCenter;
import org.thoughtcrime.securesms.connect.DcHelper;
import org.thoughtcrime.securesms.permissions.Permissions;
import org.thoughtcrime.securesms.proxy.ProxySettingsActivity;
import org.thoughtcrime.securesms.util.DynamicTheme;
import org.thoughtcrime.securesms.util.IntentUtils;
import org.thoughtcrime.securesms.util.Util;
import org.thoughtcrime.securesms.util.views.ProgressDialog;

public class RegistrationActivity extends BaseActionBarActivity implements DcEventCenter.DcEventDelegate {
    private Group advancedGroup;
    private ImageView advancedIcon;
    Spinner authMethod;
    Spinner certCheck;
    private TextInputEditText emailInput;
    Spinner imapSecurity;
    private TextInputEditText passwordInput;
    private ProgressDialog progressDialog;
    private DcProvider provider;
    private TextView providerHint;
    private View providerLayout;
    private TextView providerLink;
    private SwitchCompat proxySwitch;
    Spinner smtpSecurity;
    private final DynamicTheme dynamicTheme = new DynamicTheme();
    private long oauth2Requested = 0;
    private boolean oauth2DeclinedByUser = false;

    private enum VerificationType {
        EMAIL,
        SERVER,
        PORT
    }

    @Override
    public boolean runOnMain() {
        return DcEventCenter.DcEventDelegate.CC.$default$runOnMain(this);
    }

    @Override
    public void onCreate(android.os.Bundle r12) {
        throw new UnsupportedOperationException("Method not decompiled: org.thoughtcrime.securesms.RegistrationActivity.onCreate(android.os.Bundle):void");
    }

    void m1293x502853be(View view) {
        onProviderLink();
    }

    void m1294x4fb1edbf(View view) {
        this.proxySwitch.setChecked(!r2.isChecked());
        startActivity(new Intent((Context) this, (Class<?>) ProxySettingsActivity.class));
    }

    void m1295x4f3b87c0(View view, boolean z) {
        focusListener(view, z, VerificationType.EMAIL);
    }

    void m1296x4ec521c1(View view, boolean z) {
        focusListener(view, z, VerificationType.SERVER);
    }

    void m1297x4e4ebbc2(View view, boolean z) {
        focusListener(view, z, VerificationType.PORT);
    }

    void m1298x4dd855c3(View view, boolean z) {
        focusListener(view, z, VerificationType.SERVER);
    }

    void m1299x4d61efc4(View view, boolean z) {
        focusListener(view, z, VerificationType.PORT);
    }

    void m1300x4ceb89c5(View view) {
        onAdvancedSettings();
    }

    void m1301x4c7523c6(View view) {
        onAdvancedSettings();
    }

    void m1302x4bfebdc7(View view) {
        showLog();
    }

    private void registerForEvents() {
        DcHelper.getEventCenter(this).addObserver(2041, this);
    }

    @Override
    public void onResume() {
        super.onResume();
        this.dynamicTheme.onResume(this);
        this.proxySwitch.setChecked(DcHelper.getInt(this, DcHelper.CONFIG_PROXY_ENABLED) == 1);
    }

    private void showLog() {
        startActivity(new Intent(getApplicationContext(), (Class<?>) LogViewActivity.class));
    }

    public boolean onPrepareOptionsMenu(Menu menu) {
        MenuInflater menuInflater = getMenuInflater();
        menu.clear();
        menuInflater.inflate(R.menu.registration, menu);
        super.onPrepareOptionsMenu(menu);
        return true;
    }

    public boolean onOptionsItemSelected(MenuItem menuItem) {
        int itemId = menuItem.getItemId();
        if (itemId == R.id.do_register) {
            do_register();
            return true;
        }
        if (itemId == 16908332) {
            finish();
            return true;
        }
        return super.onOptionsItemSelected(menuItem);
    }

    private void do_register() {
        checkOauth2start().addListener(new ListenableFuture.Listener<Boolean>() {
            public void onSuccess(Boolean bool) {
                if (bool.booleanValue()) {
                    return;
                }
                RegistrationActivity.this.updateProviderInfo();
                RegistrationActivity.this.onLogin();
            }

            public void onFailure(ExecutionException executionException) {
                RegistrationActivity.this.updateProviderInfo();
                RegistrationActivity.this.onLogin();
            }
        });
    }

    public void onDestroy() {
        super.onDestroy();
        DcHelper.getEventCenter(this).removeObservers(this);
    }

    public void onRequestPermissionsResult(int i, String[] strArr, int[] iArr) {
        Permissions.onRequestPermissionsResult((Activity) this, i, strArr, iArr);
    }

    static class AnonymousClass4 {
        static final int[] $SwitchMap$org$thoughtcrime$securesms$RegistrationActivity$VerificationType;

        static {
            int[] iArr = new int[VerificationType.values().length];
            $SwitchMap$org$thoughtcrime$securesms$RegistrationActivity$VerificationType = iArr;
            try {
                iArr[VerificationType.EMAIL.ordinal()] = 1;
            } catch (NoSuchFieldError unused) {
            }
            try {
                $SwitchMap$org$thoughtcrime$securesms$RegistrationActivity$VerificationType[VerificationType.SERVER.ordinal()] = 2;
            } catch (NoSuchFieldError unused2) {
            }
            try {
                $SwitchMap$org$thoughtcrime$securesms$RegistrationActivity$VerificationType[VerificationType.PORT.ordinal()] = 3;
            } catch (NoSuchFieldError unused3) {
            }
        }
    }

    private void focusListener(View view, boolean z, VerificationType verificationType) {
        if (z) {
            return;
        }
        TextInputEditText textInputEditText = (TextInputEditText) view;
        int i = AnonymousClass4.$SwitchMap$org$thoughtcrime$securesms$RegistrationActivity$VerificationType[verificationType.ordinal()];
        if (i == 1) {
            verifyEmail(textInputEditText);
            if (!this.oauth2DeclinedByUser) {
                checkOauth2start().addListener(new ListenableFuture.Listener<Boolean>() {
                    public void onSuccess(Boolean bool) {
                        if (bool.booleanValue()) {
                            return;
                        }
                        RegistrationActivity.this.updateProviderInfo();
                    }

                    public void onFailure(ExecutionException executionException) {
                        RegistrationActivity.this.updateProviderInfo();
                    }
                });
                return;
            } else {
                updateProviderInfo();
                return;
            }
        }
        if (i == 2) {
            verifyServer(textInputEditText);
        } else {
            if (i != 3) {
                return;
            }
            verifyPort(textInputEditText);
        }
    }

    private ListenableFuture<Boolean> checkOauth2start() {
        SettableFuture settableFuture = new SettableFuture();
        String obj = this.emailInput.getText().toString();
        if (!TextUtils.isEmpty(obj)) {
            new PrecheckOauth2AsyncTask(this, obj, settableFuture).execute(new Void[0]);
        } else {
            settableFuture.set(false);
        }
        return settableFuture;
    }

    static class PrecheckOauth2AsyncTask extends AsyncTask<Void, Void, Void> {
        private final WeakReference<RegistrationActivity> activityWeakReference;
        private final DcContext dcContext;
        private final String email;
        private final SettableFuture<Boolean> oauth2started;
        private String oauth2url = "";

        public PrecheckOauth2AsyncTask(RegistrationActivity registrationActivity, String str, SettableFuture<Boolean> settableFuture) {
            this.activityWeakReference = new WeakReference<>(registrationActivity);
            this.email = str;
            this.oauth2started = settableFuture;
            this.dcContext = DcHelper.getContext(registrationActivity);
        }

        @Override
        public Void doInBackground(Void... voidArr) {
            String oauth2Url = this.dcContext.getOauth2Url(this.email, "chat.delta:/com.b44t.messenger/auth");
            this.oauth2url = oauth2Url;
            if (this.dcContext.isGmailOauth2Url(oauth2Url)) {
                this.oauth2url = null;
            }
            return null;
        }

        @Override
        public void onPostExecute(Void r5) {
            super.onPostExecute((PrecheckOauth2AsyncTask) r5);
            final RegistrationActivity registrationActivity = this.activityWeakReference.get();
            if (registrationActivity != 0 && !TextUtils.isEmpty(this.oauth2url)) {
                new AlertDialog.Builder(registrationActivity).setTitle(R.string.login_info_oauth2_title).setMessage(R.string.login_info_oauth2_text).setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
                    @Override
                    public final void onClick(DialogInterface dialogInterface, int i) {
                        RegistrationActivity.PrecheckOauth2AsyncTask.this.m1308x3533eddc(registrationActivity, dialogInterface, i);
                    }
                }).setPositiveButton(R.string.perm_continue, new DialogInterface.OnClickListener() {
                    @Override
                    public final void onClick(DialogInterface dialogInterface, int i) {
                        RegistrationActivity.PrecheckOauth2AsyncTask.this.m1309xfc3fd4dd(registrationActivity, dialogInterface, i);
                    }
                }).setCancelable(false).show();
            } else {
                this.oauth2started.set(false);
            }
        }

        void m1308x3533eddc(RegistrationActivity registrationActivity, DialogInterface dialogInterface, int i) {
            registrationActivity.oauth2DeclinedByUser = true;
            this.oauth2started.set(false);
        }

        void m1309xfc3fd4dd(RegistrationActivity registrationActivity, DialogInterface dialogInterface, int i) {
            registrationActivity.oauth2Requested = System.currentTimeMillis();
            IntentUtils.showInBrowser(registrationActivity, this.oauth2url);
            this.oauth2started.set(true);
        }
    }

    public void updateProviderInfo() {
        Util.runOnBackground(new Runnable() {
            @Override
            public final void run() {
                RegistrationActivity.this.m1307x392974b9();
            }
        });
    }

    void m1307x392974b9() {
        this.provider = DcHelper.getContext(this).getProviderFromEmailWithDns(this.emailInput.getText().toString());
        Util.runOnMain(new Runnable() {
            @Override
            public final void run() {
                RegistrationActivity.this.m1306x399fdab8();
            }
        });
    }

    void m1306x399fdab8() {
        if (this.provider != null) {
            Resources resources = getResources();
            this.providerHint.setText(this.provider.getBeforeLoginHint());
            int status = this.provider.getStatus();
            if (status == 2) {
                this.providerHint.setTextColor(resources.getColor(R.color.provider_prep_fg));
                this.providerLink.setTextColor(resources.getColor(R.color.provider_prep_fg));
                this.providerLayout.setBackgroundColor(resources.getColor(R.color.provider_prep_bg));
                this.providerLayout.setVisibility(0);
                return;
            }
            if (status == 3) {
                this.providerHint.setTextColor(resources.getColor(R.color.provider_broken_fg));
                this.providerLink.setTextColor(resources.getColor(R.color.provider_broken_fg));
                this.providerLayout.setBackgroundColor(getResources().getColor(R.color.provider_broken_bg));
                this.providerLayout.setVisibility(0);
                return;
            }
            this.providerLayout.setVisibility(8);
            return;
        }
        this.providerLayout.setVisibility(8);
    }

    public void maybeCleanProviderInfo() {
        if (this.provider == null || this.providerLayout.getVisibility() != 0) {
            return;
        }
        this.provider = null;
        this.providerLayout.setVisibility(8);
    }

    private void onProviderLink() {
        DcProvider dcProvider = this.provider;
        if (dcProvider != null) {
            String overviewPage = dcProvider.getOverviewPage();
            if (!overviewPage.isEmpty()) {
                IntentUtils.showInBrowser(this, overviewPage);
            } else {
                Toast.makeText((Context) this, (CharSequence) "ErrProviderWithoutUrl", 1).show();
            }
        }
    }

    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        if ("android.intent.action.VIEW".equals(intent.getAction())) {
            Uri data = intent.getData();
            String path = data.getPath();
            if ((path.startsWith("/com.b44t.messenger") || path.startsWith("/auth")) && System.currentTimeMillis() - this.oauth2Requested <= 10800000) {
                String queryParameter = data.getQueryParameter("code");
                if (TextUtils.isEmpty(queryParameter)) {
                    return;
                }
                this.passwordInput.setText(queryParameter);
                this.authMethod.setSelection(1);
                onLogin();
            }
        }
    }

    private void verifyEmail(TextInputEditText textInputEditText) {
        String string = getString(R.string.login_error_mail);
        if (DcHelper.getContext(this).mayBeValidAddr(textInputEditText.getText().toString())) {
            return;
        }
        textInputEditText.setError(string);
    }

    private void verifyServer(TextInputEditText textInputEditText) {
        String string = getString(R.string.login_error_server);
        String obj = textInputEditText.getText().toString();
        if (TextUtils.isEmpty(obj) || Patterns.DOMAIN_NAME.matcher(obj).matches() || Patterns.IP_ADDRESS.matcher(obj).matches() || Patterns.WEB_URL.matcher(obj).matches() || "localhost".equals(obj)) {
            return;
        }
        textInputEditText.setError(string);
    }

    private void verifyPort(TextInputEditText textInputEditText) {
        String string = getString(R.string.login_error_port);
        String obj = textInputEditText.getText().toString();
        if (obj.isEmpty()) {
            return;
        }
        try {
            int intValue = Integer.valueOf(obj).intValue();
            if (intValue < 1 || intValue > 65535) {
                textInputEditText.setError(string);
            }
        } catch (NumberFormatException unused) {
            textInputEditText.setError(string);
        }
    }

    private void onAdvancedSettings() {
        if (this.advancedGroup.getVisibility() == 0) {
            this.advancedGroup.setVisibility(8);
            this.advancedIcon.setRotation(45.0f);
        } else {
            this.advancedGroup.setVisibility(0);
            this.advancedIcon.setRotation(0.0f);
        }
    }

    public void onLogin() {
        if (!verifyRequiredFields()) {
            Toast.makeText((Context) this, R.string.login_error_required_fields, 1).show();
            return;
        }
        setupConfig();
        ProgressDialog progressDialog = this.progressDialog;
        if (progressDialog != null) {
            progressDialog.dismiss();
            this.progressDialog = null;
        }
        ProgressDialog progressDialog2 = new ProgressDialog(this);
        this.progressDialog = progressDialog2;
        progressDialog2.setMessage(getString(R.string.one_moment));
        this.progressDialog.setCanceledOnTouchOutside(false);
        this.progressDialog.setCancelable(false);
        this.progressDialog.setButton(-2, getString(android.R.string.cancel), new DialogInterface.OnClickListener() {
            @Override
            public final void onClick(DialogInterface dialogInterface, int i) {
                RegistrationActivity.this.m1303x886b3e72(dialogInterface, i);
            }
        });
        this.progressDialog.show();
    }

    void m1303x886b3e72(DialogInterface dialogInterface, int i) {
        stopLoginProcess();
    }

    private boolean verifyRequiredFields() {
        return DcHelper.getContext(this).mayBeValidAddr(this.emailInput.getText().toString()) && !this.passwordInput.getText().toString().isEmpty();
    }

    private void setupConfig() {
        DcHelper.getEventCenter(this).captureNextError();
        final EnteredLoginParam enteredLoginParam = new EnteredLoginParam(getParam(R.id.email_text, true), getParam(R.id.password_text, false), getParam(R.id.imap_server_text, true), Util.objectToInt(getParam(R.id.imap_port_text, true)), EnteredLoginParam.socketSecurityFromInt(this.imapSecurity.getSelectedItemPosition()), getParam(R.id.imap_login_text, false), getParam(R.id.smtp_server_text, true), Util.objectToInt(getParam(R.id.smtp_port_text, true)), EnteredLoginParam.socketSecurityFromInt(this.smtpSecurity.getSelectedItemPosition()), getParam(R.id.smtp_login_text, false), getParam(R.id.smtp_password_text, false), EnteredLoginParam.certificateChecksFromInt(this.certCheck.getSelectedItemPosition()), this.authMethod.getSelectedItemPosition() == 1);
        new Thread(new Runnable() {
            @Override
            public final void run() {
                RegistrationActivity.this.m1305x22c8ba7f(enteredLoginParam);
            }
        }).start();
    }

    void m1305x22c8ba7f(EnteredLoginParam enteredLoginParam) {
        try {
            DcHelper.getRpc(this).addOrUpdateTransport(DcHelper.getContext(this).getAccountId(), enteredLoginParam);
            DcHelper.getEventCenter(this).endCaptureNextError();
            this.progressDialog.dismiss();
            startActivity(new Intent(getApplicationContext(), (Class<?>) ConversationListActivity.class));
            finish();
        } catch (RpcException e) {
            Util.runOnMain(new Runnable() {
                @Override
                public final void run() {
                    RegistrationActivity.this.m1304x233f207e(e);
                }
            });
        }
    }

    void m1304x233f207e(RpcException rpcException) {
        DcHelper.getEventCenter(this).endCaptureNextError();
        this.progressDialog.dismiss();
        WelcomeActivity.maybeShowConfigurationError(this, rpcException.getMessage());
    }

    private String getParam(int i, boolean z) {
        String obj = findViewById(i).getText().toString();
        if (z) {
            obj = obj.trim();
        }
        if (obj.isEmpty()) {
            return null;
        }
        return obj;
    }

    private void stopLoginProcess() {
        DcHelper.getContext(this).stopOngoingProcess();
    }

    @Override
    public void handleEvent(DcEvent dcEvent) {
        if (dcEvent.getId() == 2041) {
            ProgressDialog progressDialog = this.progressDialog;
            progressDialog.setMessage(getResources().getString(R.string.one_moment) + String.format(" %d%%", Integer.valueOf(dcEvent.getData1Int() / 10)));
        }
    }
}