From 0ef4d645dfd50d7391d4f17c86fb60fb04c003e1 Mon Sep 17 00:00:00 2001 From: adbenitez Date: Wed, 10 Dec 2025 10:57:55 +0100 Subject: [PATCH] allow to add relays via link --- .../securesms/InstantOnboardingActivity.java | 12 ++++++++++-- .../securesms/relay/RelayListActivity.java | 7 +++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/thoughtcrime/securesms/InstantOnboardingActivity.java b/src/main/java/org/thoughtcrime/securesms/InstantOnboardingActivity.java index b567ffc12..f9d6ded94 100644 --- a/src/main/java/org/thoughtcrime/securesms/InstantOnboardingActivity.java +++ b/src/main/java/org/thoughtcrime/securesms/InstantOnboardingActivity.java @@ -50,6 +50,7 @@ import org.thoughtcrime.securesms.profiles.AvatarHelper; import org.thoughtcrime.securesms.proxy.ProxySettingsActivity; import org.thoughtcrime.securesms.qr.RegistrationQrActivity; import org.thoughtcrime.securesms.relay.EditRelayActivity; +import org.thoughtcrime.securesms.relay.RelayListActivity; import org.thoughtcrime.securesms.scribbles.ScribbleActivity; import org.thoughtcrime.securesms.util.IntentUtils; import org.thoughtcrime.securesms.util.Prefs; @@ -106,11 +107,18 @@ public class InstantOnboardingActivity extends BaseActionBarActivity implements getSupportActionBar().setDisplayHomeAsUpEnabled(true); boolean fromWelcome = getIntent().getBooleanExtra(FROM_WELCOME, false); + if (DcHelper.getContext(this).isConfigured() == 1) { // if account is configured it means we didn't come from Welcome screen nor from QR scanner, - // instead, user clicked a dcaccount:// URI directly, so we need to switch to a new account: - AccountManager.getInstance().beginAccountCreation(this); + // instead, user clicked a dcaccount:// URI directly, so we need to just offer to add a new relay + Intent intent = new Intent(this, RelayListActivity.class); + String qrData = getIntent().getData().toString(); + intent.putExtra(RelayListActivity.EXTRA_QR_DATA, qrData); + startActivity(intent); + finish(); + return; } + getOnBackPressedDispatcher().addCallback(this, new OnBackPressedCallback(!fromWelcome) { @Override public void handleOnBackPressed() { diff --git a/src/main/java/org/thoughtcrime/securesms/relay/RelayListActivity.java b/src/main/java/org/thoughtcrime/securesms/relay/RelayListActivity.java index 32bfb174d..d0ae1859d 100644 --- a/src/main/java/org/thoughtcrime/securesms/relay/RelayListActivity.java +++ b/src/main/java/org/thoughtcrime/securesms/relay/RelayListActivity.java @@ -37,6 +37,7 @@ public class RelayListActivity extends BaseActionBarActivity implements RelayListAdapter.OnRelayClickListener, DcEventCenter.DcEventDelegate { private static final String TAG = RelayListActivity.class.getSimpleName(); + public static final String EXTRA_QR_DATA = "qr_data"; private RelayListAdapter adapter; private Rpc rpc; @@ -83,6 +84,12 @@ public class RelayListActivity extends BaseActionBarActivity DcEventCenter eventCenter = DcHelper.getEventCenter(this); eventCenter.addObserver(DcContext.DC_EVENT_CONFIGURE_PROGRESS, this); + + String qrdata = getIntent().getStringExtra(EXTRA_QR_DATA); + if (qrdata != null) { + QrCodeHandler qrCodeHandler = new QrCodeHandler(this); + qrCodeHandler.handleQrData(qrdata); + } } @Override