正在查看: Delta Chat v1.58.3 应用的 RegistrationActivity.java JAVA 源代码文件
本页面展示 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)));
}
}
}