From 2f05b20b0faebb5cdac57293dd4905351aad6a12 Mon Sep 17 00:00:00 2001 From: adbenitez Date: Tue, 2 Dec 2025 05:20:42 +0100 Subject: [PATCH] allow editing transports --- src/main/AndroidManifest.xml | 2 +- .../securesms/ConversationFragment.java | 5 ++- .../securesms/InstantOnboardingActivity.java | 8 ++--- .../EditRelayActivity.java} | 32 ++++++++++++++++--- .../securesms/relay/RelayListActivity.java | 8 +++++ .../securesms/relay/RelayListAdapter.java | 9 ++++++ src/main/res/layout/relay_list_item.xml | 12 +++++++ 7 files changed, 64 insertions(+), 12 deletions(-) rename src/main/java/org/thoughtcrime/securesms/{EditTransportActivity.java => relay/EditRelayActivity.java} (94%) diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml index f044dd848..37c278ba4 100644 --- a/src/main/AndroidManifest.xml +++ b/src/main/AndroidManifest.xml @@ -234,7 +234,7 @@ android:theme="@style/TextSecure.LightNoActionBar" android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/> - { - startRegistrationActivity(); + startActivity(new Intent(this, EditRelayActivity.class)); signUpDialog.dismiss(); }); view.findViewById(R.id.scan_qr_button).setOnClickListener((v) -> { @@ -367,11 +368,6 @@ public class InstantOnboardingActivity extends BaseActionBarActivity implements signUpDialog.show(); } - private void startRegistrationActivity() { - Intent intent = new Intent(this, EditTransportActivity.class); - startActivity(intent); - } - private void updateProvider() { if (isDcLogin) { signUpBtn.setText(R.string.login_title); diff --git a/src/main/java/org/thoughtcrime/securesms/EditTransportActivity.java b/src/main/java/org/thoughtcrime/securesms/relay/EditRelayActivity.java similarity index 94% rename from src/main/java/org/thoughtcrime/securesms/EditTransportActivity.java rename to src/main/java/org/thoughtcrime/securesms/relay/EditRelayActivity.java index 9f7593887..62c5e905e 100644 --- a/src/main/java/org/thoughtcrime/securesms/EditTransportActivity.java +++ b/src/main/java/org/thoughtcrime/securesms/relay/EditRelayActivity.java @@ -1,4 +1,4 @@ -package org.thoughtcrime.securesms; +package org.thoughtcrime.securesms.relay; import static org.thoughtcrime.securesms.connect.DcHelper.CONFIG_PROXY_ENABLED; import static org.thoughtcrime.securesms.connect.DcHelper.getContext; @@ -10,6 +10,7 @@ import android.os.Bundle; import android.text.Editable; import android.text.TextUtils; import android.text.TextWatcher; +import android.util.Log; import android.util.Patterns; import android.view.Menu; import android.view.MenuInflater; @@ -32,6 +33,11 @@ import com.b44t.messenger.DcEvent; import com.b44t.messenger.DcProvider; import com.google.android.material.textfield.TextInputEditText; +import org.thoughtcrime.securesms.BaseActionBarActivity; +import org.thoughtcrime.securesms.ConversationListActivity; +import org.thoughtcrime.securesms.LogViewActivity; +import org.thoughtcrime.securesms.R; +import org.thoughtcrime.securesms.WelcomeActivity; import org.thoughtcrime.securesms.connect.DcEventCenter; import org.thoughtcrime.securesms.connect.DcHelper; import org.thoughtcrime.securesms.permissions.Permissions; @@ -49,7 +55,7 @@ import chat.delta.rpc.types.EnteredCertificateChecks; import chat.delta.rpc.types.EnteredLoginParam; import chat.delta.rpc.types.Socket; -public class EditTransportActivity extends BaseActionBarActivity implements DcEventCenter.DcEventDelegate { +public class EditRelayActivity extends BaseActionBarActivity implements DcEventCenter.DcEventDelegate { private enum VerificationType { EMAIL, @@ -57,6 +63,9 @@ public class EditTransportActivity extends BaseActionBarActivity implements DcEv PORT, } + private static final String TAG = EditRelayActivity.class.getSimpleName(); + public final static String EXTRA_ADDR = "extra_addr"; + private TextInputEditText emailInput; private TextInputEditText passwordInput; @@ -118,11 +127,26 @@ public class EditTransportActivity extends BaseActionBarActivity implements DcEv startActivity(new Intent(this, ProxySettingsActivity.class)); }); + String addr = getIntent().getStringExtra(EXTRA_ADDR); EnteredLoginParam config = null; try { List relays = rpc.listTransports(accId); - if (!relays.isEmpty()) config = relays.get(0); - } catch (RpcException ignored) {} + for (EnteredLoginParam relay : relays) { + if (addr != null && addr.equals(relay.addr)) { + config = relay; + break; + } + } + if (config == null && !relays.isEmpty()) { + Log.e(TAG, "Error got unknown address: " + addr); + finish(); + return; + }; + } catch (RpcException e) { + Log.e(TAG, "Error calling Rpc.listTransports()", e); + finish(); + return; + } ActionBar actionBar = getSupportActionBar(); if (actionBar != null) { diff --git a/src/main/java/org/thoughtcrime/securesms/relay/RelayListActivity.java b/src/main/java/org/thoughtcrime/securesms/relay/RelayListActivity.java index 1a2f430cc..a753d4ea5 100644 --- a/src/main/java/org/thoughtcrime/securesms/relay/RelayListActivity.java +++ b/src/main/java/org/thoughtcrime/securesms/relay/RelayListActivity.java @@ -1,5 +1,6 @@ package org.thoughtcrime.securesms.relay; +import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.MenuItem; @@ -101,6 +102,13 @@ public class RelayListActivity extends BaseActionBarActivity } } + @Override + public void onRelayEdit(EnteredLoginParam relay) { + Intent intent = new Intent(this, EditRelayActivity.class); + intent.putExtra(EditRelayActivity.EXTRA_ADDR, relay.addr); + startActivity(intent); + } + @Override public boolean onOptionsItemSelected(@NonNull MenuItem item) { if (item.getItemId() == android.R.id.home) { diff --git a/src/main/java/org/thoughtcrime/securesms/relay/RelayListAdapter.java b/src/main/java/org/thoughtcrime/securesms/relay/RelayListAdapter.java index 191847e50..f0bf1b8b5 100644 --- a/src/main/java/org/thoughtcrime/securesms/relay/RelayListAdapter.java +++ b/src/main/java/org/thoughtcrime/securesms/relay/RelayListAdapter.java @@ -24,6 +24,7 @@ public class RelayListAdapter extends RecyclerView.Adapter { + if (listener != null) { + listener.onRelayEdit(relay); + } + }); } } } diff --git a/src/main/res/layout/relay_list_item.xml b/src/main/res/layout/relay_list_item.xml index 329fb7d14..08b192914 100644 --- a/src/main/res/layout/relay_list_item.xml +++ b/src/main/res/layout/relay_list_item.xml @@ -37,4 +37,16 @@ android:textSize="16sp" tools:text="user@example.com" /> +