From dc1be8e07b538df1089d9b743c7a74c1e081a965 Mon Sep 17 00:00:00 2001 From: adbenitez Date: Wed, 19 Nov 2025 18:34:26 +0100 Subject: [PATCH 1/5] use Rpc.listTransports() instead of old configs --- .../securesms/RegistrationActivity.java | 121 ++++++++++-------- .../securesms/connect/DcHelper.java | 12 -- 2 files changed, 69 insertions(+), 64 deletions(-) diff --git a/src/main/java/org/thoughtcrime/securesms/RegistrationActivity.java b/src/main/java/org/thoughtcrime/securesms/RegistrationActivity.java index 2714a91f6..1607c4039 100644 --- a/src/main/java/org/thoughtcrime/securesms/RegistrationActivity.java +++ b/src/main/java/org/thoughtcrime/securesms/RegistrationActivity.java @@ -1,17 +1,6 @@ package org.thoughtcrime.securesms; -import static org.thoughtcrime.securesms.connect.DcHelper.CONFIG_ADDRESS; -import static org.thoughtcrime.securesms.connect.DcHelper.CONFIG_MAIL_PASSWORD; -import static org.thoughtcrime.securesms.connect.DcHelper.CONFIG_MAIL_PORT; -import static org.thoughtcrime.securesms.connect.DcHelper.CONFIG_MAIL_SECURITY; -import static org.thoughtcrime.securesms.connect.DcHelper.CONFIG_MAIL_SERVER; -import static org.thoughtcrime.securesms.connect.DcHelper.CONFIG_MAIL_USER; import static org.thoughtcrime.securesms.connect.DcHelper.CONFIG_PROXY_ENABLED; -import static org.thoughtcrime.securesms.connect.DcHelper.CONFIG_SEND_PASSWORD; -import static org.thoughtcrime.securesms.connect.DcHelper.CONFIG_SEND_PORT; -import static org.thoughtcrime.securesms.connect.DcHelper.CONFIG_SEND_SECURITY; -import static org.thoughtcrime.securesms.connect.DcHelper.CONFIG_SEND_SERVER; -import static org.thoughtcrime.securesms.connect.DcHelper.CONFIG_SEND_USER; import static org.thoughtcrime.securesms.connect.DcHelper.getContext; import android.content.DialogInterface; @@ -53,6 +42,8 @@ import org.thoughtcrime.securesms.util.Util; import org.thoughtcrime.securesms.util.ViewUtil; import org.thoughtcrime.securesms.util.views.ProgressDialog; +import java.util.List; + import chat.delta.rpc.Rpc; import chat.delta.rpc.RpcException; import chat.delta.rpc.types.EnteredCertificateChecks; @@ -88,10 +79,15 @@ public class RegistrationActivity extends BaseActionBarActivity implements DcEve private SwitchCompat proxySwitch; + Rpc rpc; + int accId; + @Override public void onCreate(Bundle bundle) { super.onCreate(bundle); dynamicTheme.onCreate(this); + rpc = DcHelper.getRpc(this); + accId = DcHelper.getContext(this).getAccountId(); setContentView(R.layout.registration_activity); @@ -122,19 +118,23 @@ public class RegistrationActivity extends BaseActionBarActivity implements DcEve startActivity(new Intent(this, ProxySettingsActivity.class)); }); - boolean isConfigured = DcHelper.isConfigured(getApplicationContext()); + EnteredLoginParam config = null; + try { + List relays = rpc.listTransports(accId); + if (!relays.isEmpty()) config = relays.get(0); + } catch (RpcException ignored) {} ActionBar actionBar = getSupportActionBar(); if (actionBar != null) { actionBar.setTitle( - isConfigured? R.string.edit_transport : R.string.manual_account_setup_option + config != null? R.string.edit_transport : R.string.manual_account_setup_option ); actionBar.setDisplayHomeAsUpEnabled(true); actionBar.setHomeAsUpIndicator(R.drawable.ic_close_white_24dp); actionBar.setElevation(0); // TODO: use custom toolbar instead } - if (isConfigured) emailInput.setEnabled(false); + if (config != null) emailInput.setEnabled(false); emailInput.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @@ -154,66 +154,54 @@ public class RegistrationActivity extends BaseActionBarActivity implements DcEve viewLogText.setOnClickListener((view) -> showLog()); boolean expandAdvanced = false; - String strVal; int intVal; intVal = DcHelper.getInt(this, CONFIG_PROXY_ENABLED); proxySwitch.setChecked(intVal == 1); expandAdvanced = expandAdvanced || intVal == 1; - if (isConfigured) { - String email = DcHelper.get(this, CONFIG_ADDRESS); - emailInput.setText(email); - if(!TextUtils.isEmpty(email)) { - emailInput.setSelection(email.length(), email.length()); + if (config != null) { // configured + emailInput.setText(config.addr); + if(!TextUtils.isEmpty(config.addr)) { + emailInput.setSelection(config.addr.length(), config.addr.length()); } - passwordInput.setText(DcHelper.get(this, CONFIG_MAIL_PASSWORD)); + passwordInput.setText(config.password); TextInputEditText imapLoginInput = findViewById(R.id.imap_login_text); - strVal = DcHelper.get(this, CONFIG_MAIL_USER); - imapLoginInput.setText(strVal); - expandAdvanced = expandAdvanced || !TextUtils.isEmpty(strVal); + imapLoginInput.setText(config.imapUser); + expandAdvanced = expandAdvanced || !TextUtils.isEmpty(config.imapUser); - strVal = DcHelper.get(this, CONFIG_MAIL_SERVER); - imapServerInput.setText(strVal); - expandAdvanced = expandAdvanced || !TextUtils.isEmpty(strVal); + imapServerInput.setText(config.imapServer); + expandAdvanced = expandAdvanced || !TextUtils.isEmpty(config.imapServer); - strVal = DcHelper.get(this, CONFIG_MAIL_PORT); - imapPortInput.setText(strVal); - expandAdvanced = expandAdvanced || !TextUtils.isEmpty(strVal); + if (config.imapPort != null) imapPortInput.setText(config.imapPort.toString()); + expandAdvanced = expandAdvanced || config.imapPort != null; - intVal = DcHelper.getInt(this, CONFIG_MAIL_SECURITY); + intVal = socketSecurityToInt(config.imapSecurity); imapSecurity.setSelection(ViewUtil.checkBounds(intVal, imapSecurity)); expandAdvanced = expandAdvanced || intVal != 0; TextInputEditText smtpLoginInput = findViewById(R.id.smtp_login_text); - strVal = DcHelper.get(this, CONFIG_SEND_USER); - smtpLoginInput.setText(strVal); - expandAdvanced = expandAdvanced || !TextUtils.isEmpty(strVal); + smtpLoginInput.setText(config.smtpUser); + expandAdvanced = expandAdvanced || !TextUtils.isEmpty(config.smtpUser); TextInputEditText smtpPasswordInput = findViewById(R.id.smtp_password_text); - strVal = DcHelper.get(this, CONFIG_SEND_PASSWORD); - smtpPasswordInput.setText(strVal); - expandAdvanced = expandAdvanced || !TextUtils.isEmpty(strVal); + smtpPasswordInput.setText(config.smtpPassword); + expandAdvanced = expandAdvanced || !TextUtils.isEmpty(config.smtpPassword); - strVal = DcHelper.get(this, CONFIG_SEND_SERVER); - smtpServerInput.setText(strVal); - expandAdvanced = expandAdvanced || !TextUtils.isEmpty(strVal); + smtpServerInput.setText(config.smtpServer); + expandAdvanced = expandAdvanced || !TextUtils.isEmpty(config.smtpServer); - strVal = DcHelper.get(this, CONFIG_SEND_PORT); - smtpPortInput.setText(strVal); - expandAdvanced = expandAdvanced || !TextUtils.isEmpty(strVal); + if (config.smtpPort != null) smtpPortInput.setText(config.smtpPort.toString()); + expandAdvanced = expandAdvanced || config.smtpPort != null; - intVal = DcHelper.getInt(this, CONFIG_SEND_SECURITY); + intVal = socketSecurityToInt(config.smtpSecurity); smtpSecurity.setSelection(ViewUtil.checkBounds(intVal, smtpSecurity)); expandAdvanced = expandAdvanced || intVal != 0; - int imapCertificateChecks = DcHelper.getInt(this, "imap_certificate_checks"); - if (imapCertificateChecks == 3) { - imapCertificateChecks = 2; // 3 is a deprecated alias for 2 - } - certCheck.setSelection(ViewUtil.checkBounds(imapCertificateChecks, certCheck)); - expandAdvanced = expandAdvanced || imapCertificateChecks != 0; + intVal = certificateChecksToInt(config.certificateChecks); + certCheck.setSelection(ViewUtil.checkBounds(intVal, certCheck)); + expandAdvanced = expandAdvanced || intVal != 0; } if (expandAdvanced) { onAdvancedSettings(); } @@ -430,6 +418,20 @@ public class RegistrationActivity extends BaseActionBarActivity implements DcEve throw new IllegalArgumentException("Invalid certificate position: " + position); } + private int certificateChecksToInt(EnteredCertificateChecks check) { + if (check == null) return 0; + + switch (check) { + case automatic: + return 0; + case strict: + return 1; + case acceptInvalidCertificates: + return 2; + } + throw new IllegalArgumentException("Unknown EnteredCertificateChecks type: " + check); + } + public static Socket socketSecurityFromInt(int position) { switch (position) { case 0: @@ -444,6 +446,22 @@ public class RegistrationActivity extends BaseActionBarActivity implements DcEve throw new IllegalArgumentException("Invalid socketSecurity position: " + position); } + public static int socketSecurityToInt(Socket security) { + if (security == null) return 0; + + switch (security) { + case automatic: + return 0; + case ssl: + return 1; + case starttls: + return 2; + case plain: + return 3; + } + throw new IllegalArgumentException("Invalid socketSecurity type: " + security); + } + private void setupConfig() { DcHelper.getEventCenter(this).captureNextError(); @@ -462,9 +480,8 @@ public class RegistrationActivity extends BaseActionBarActivity implements DcEve param.certificateChecks = certificateChecksFromInt(certCheck.getSelectedItemPosition()); new Thread(() -> { - Rpc rpc = DcHelper.getRpc(this); try { - rpc.addOrUpdateTransport(DcHelper.getContext(this).getAccountId(), param); + rpc.addOrUpdateTransport(accId, param); DcHelper.getEventCenter(this).endCaptureNextError(); progressDialog.dismiss(); Intent conversationList = new Intent(getApplicationContext(), ConversationListActivity.class); diff --git a/src/main/java/org/thoughtcrime/securesms/connect/DcHelper.java b/src/main/java/org/thoughtcrime/securesms/connect/DcHelper.java index b2a1c89bb..8a8ed3d53 100644 --- a/src/main/java/org/thoughtcrime/securesms/connect/DcHelper.java +++ b/src/main/java/org/thoughtcrime/securesms/connect/DcHelper.java @@ -49,19 +49,7 @@ public class DcHelper { private static final String TAG = DcHelper.class.getSimpleName(); - public static final String CONFIG_ADDRESS = "addr"; public static final String CONFIG_CONFIGURED_ADDRESS = "configured_addr"; - public static final String CONFIG_MAIL_SERVER = "mail_server"; - public static final String CONFIG_MAIL_USER = "mail_user"; - public static final String CONFIG_MAIL_PASSWORD = "mail_pw"; - public static final String CONFIG_MAIL_PORT = "mail_port"; - public static final String CONFIG_MAIL_SECURITY = "mail_security"; - public static final String CONFIG_SEND_SERVER = "send_server"; - public static final String CONFIG_SEND_USER = "send_user"; - public static final String CONFIG_SEND_PASSWORD = "send_pw"; - public static final String CONFIG_SEND_PORT = "send_port"; - public static final String CONFIG_SEND_SECURITY = "send_security"; - public static final String CONFIG_SERVER_FLAGS = "server_flags"; public static final String CONFIG_DISPLAY_NAME = "displayname"; public static final String CONFIG_SELF_STATUS = "selfstatus"; public static final String CONFIG_SELF_AVATAR = "selfavatar"; From 1c6e9fc39199bfc84c378d740cd4f90d184fa970 Mon Sep 17 00:00:00 2001 From: adbenitez Date: Thu, 20 Nov 2025 23:17:50 +0100 Subject: [PATCH 2/5] tweak RegistrationActivity --- .../securesms/RegistrationActivity.java | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/main/java/org/thoughtcrime/securesms/RegistrationActivity.java b/src/main/java/org/thoughtcrime/securesms/RegistrationActivity.java index 1607c4039..a3bf9b498 100644 --- a/src/main/java/org/thoughtcrime/securesms/RegistrationActivity.java +++ b/src/main/java/org/thoughtcrime/securesms/RegistrationActivity.java @@ -122,7 +122,9 @@ public class RegistrationActivity extends BaseActionBarActivity implements DcEve try { List relays = rpc.listTransports(accId); if (!relays.isEmpty()) config = relays.get(0); - } catch (RpcException ignored) {} + } catch (RpcException ignored) { + Log.e(TAG, "listTransport failed: ", e); + } ActionBar actionBar = getSupportActionBar(); if (actionBar != null) { @@ -428,8 +430,9 @@ public class RegistrationActivity extends BaseActionBarActivity implements DcEve return 1; case acceptInvalidCertificates: return 2; + default: + return 0; // impossible situation } - throw new IllegalArgumentException("Unknown EnteredCertificateChecks type: " + check); } public static Socket socketSecurityFromInt(int position) { @@ -450,16 +453,17 @@ public class RegistrationActivity extends BaseActionBarActivity implements DcEve if (security == null) return 0; switch (security) { - case automatic: - return 0; - case ssl: - return 1; - case starttls: - return 2; - case plain: - return 3; + case automatic: + return 0; + case ssl: + return 1; + case starttls: + return 2; + case plain: + return 3; + default: + return 0; // impossible situation } - throw new IllegalArgumentException("Invalid socketSecurity type: " + security); } private void setupConfig() { From 1ee3d40f376135aabfe4b7843dc8c3f522a06e11 Mon Sep 17 00:00:00 2001 From: adbenitez Date: Thu, 20 Nov 2025 23:20:19 +0100 Subject: [PATCH 3/5] tweak RegistrationActivity --- .../org/thoughtcrime/securesms/RegistrationActivity.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/thoughtcrime/securesms/RegistrationActivity.java b/src/main/java/org/thoughtcrime/securesms/RegistrationActivity.java index a3bf9b498..5aca54d04 100644 --- a/src/main/java/org/thoughtcrime/securesms/RegistrationActivity.java +++ b/src/main/java/org/thoughtcrime/securesms/RegistrationActivity.java @@ -424,14 +424,14 @@ public class RegistrationActivity extends BaseActionBarActivity implements DcEve if (check == null) return 0; switch (check) { - case automatic: return 0; case strict: return 1; case acceptInvalidCertificates: return 2; + case automatic: default: - return 0; // impossible situation + return 0; } } @@ -453,16 +453,15 @@ public class RegistrationActivity extends BaseActionBarActivity implements DcEve if (security == null) return 0; switch (security) { - case automatic: - return 0; case ssl: return 1; case starttls: return 2; case plain: return 3; + case automatic: default: - return 0; // impossible situation + return 0; } } From bed9a4d8d4164566416e47cec4cfcda1b79cdc24 Mon Sep 17 00:00:00 2001 From: adbenitez Date: Thu, 20 Nov 2025 23:21:08 +0100 Subject: [PATCH 4/5] remove leftover --- .../java/org/thoughtcrime/securesms/RegistrationActivity.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/org/thoughtcrime/securesms/RegistrationActivity.java b/src/main/java/org/thoughtcrime/securesms/RegistrationActivity.java index 5aca54d04..025b3277d 100644 --- a/src/main/java/org/thoughtcrime/securesms/RegistrationActivity.java +++ b/src/main/java/org/thoughtcrime/securesms/RegistrationActivity.java @@ -424,7 +424,6 @@ public class RegistrationActivity extends BaseActionBarActivity implements DcEve if (check == null) return 0; switch (check) { - return 0; case strict: return 1; case acceptInvalidCertificates: From 16738f053a5ba5d59819a83f686b5e66877ac992 Mon Sep 17 00:00:00 2001 From: adbenitez Date: Thu, 20 Nov 2025 23:22:38 +0100 Subject: [PATCH 5/5] tweak RegistrationActivity --- .../java/org/thoughtcrime/securesms/RegistrationActivity.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main/java/org/thoughtcrime/securesms/RegistrationActivity.java b/src/main/java/org/thoughtcrime/securesms/RegistrationActivity.java index 025b3277d..166d92416 100644 --- a/src/main/java/org/thoughtcrime/securesms/RegistrationActivity.java +++ b/src/main/java/org/thoughtcrime/securesms/RegistrationActivity.java @@ -122,9 +122,7 @@ public class RegistrationActivity extends BaseActionBarActivity implements DcEve try { List relays = rpc.listTransports(accId); if (!relays.isEmpty()) config = relays.get(0); - } catch (RpcException ignored) { - Log.e(TAG, "listTransport failed: ", e); - } + } catch (RpcException ignored) {} ActionBar actionBar = getSupportActionBar(); if (actionBar != null) {