From f909174119b0ae57aae7acad35b98dc2168af082 Mon Sep 17 00:00:00 2001 From: adbenitez Date: Mon, 23 Feb 2026 18:59:54 +0100 Subject: [PATCH] tweak ConversationListActivity and RelayListActivity don't relay in onActivityResult --- .../securesms/ConversationListActivity.java | 28 ++++++++++--------- .../securesms/relay/RelayListActivity.java | 25 ++++++++++------- 2 files changed, 30 insertions(+), 23 deletions(-) diff --git a/src/main/java/org/thoughtcrime/securesms/ConversationListActivity.java b/src/main/java/org/thoughtcrime/securesms/ConversationListActivity.java index c37585a39..2b7413cd8 100644 --- a/src/main/java/org/thoughtcrime/securesms/ConversationListActivity.java +++ b/src/main/java/org/thoughtcrime/securesms/ConversationListActivity.java @@ -114,6 +114,7 @@ public class ConversationListActivity extends PassphraseRequiredActionBarActivit /** used to store temporarily scanned QR to pass it back to QrCodeHandler when ScreenLockUtil is used */ private String qrData = null; private ActivityResultLauncher relayLockLauncher; + private ActivityResultLauncher qrScannerLauncher; /** used to store temporarily profile ID to delete after authorization is granted via ScreenLockUtil */ private int deleteProfileId = 0; @@ -151,6 +152,16 @@ public class ConversationListActivity extends PassphraseRequiredActionBarActivit } } ); + qrScannerLauncher = registerForActivityResult( + new ActivityResultContracts.StartActivityForResult(), + result -> { + if (result.getResultCode() == RESULT_OK) { + IntentResult scanResult = IntentIntegrator.parseActivityResult(result.getResultCode(), result.getData()); + qrData = scanResult.getContents(); + new QrCodeHandler(this).handleQrData(qrData, SecurejoinSource.Scan, SecurejoinUiPath.QrIcon, relayLockLauncher); + } + } + ); addDeviceMessages(getIntent().getBooleanExtra(FROM_WELCOME, false)); if (getIntent().getIntExtra(ACCOUNT_ID_EXTRA, -1) <= 0) { @@ -480,7 +491,10 @@ public class ConversationListActivity extends PassphraseRequiredActionBarActivit startActivity(new Intent(this, ApplicationPreferencesActivity.class)); return true; } else if (itemId == R.id.menu_qr) { - new IntentIntegrator(this).setCaptureActivity(QrActivity.class).initiateScan(); + Intent intent = new IntentIntegrator(this) + .setCaptureActivity(QrActivity.class) + .createScanIntent(); + qrScannerLauncher.launch(intent); return true; } else if (itemId == R.id.menu_global_map) { WebxdcActivity.openMaps(this, 0); @@ -684,18 +698,6 @@ public class ConversationListActivity extends PassphraseRequiredActionBarActivit refreshTitle(); } - @Override - protected void onActivityResult(int requestCode, int resultCode, Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (resultCode != RESULT_OK) return; - - if (requestCode == IntentIntegrator.REQUEST_CODE) { - IntentResult scanResult = IntentIntegrator.parseActivityResult(resultCode, data); - qrData = scanResult.getContents(); - new QrCodeHandler(this).handleQrData(qrData, SecurejoinSource.Scan, SecurejoinUiPath.QrIcon, relayLockLauncher); - } - } - @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { Permissions.onRequestPermissionsResult(this, requestCode, permissions, grantResults); diff --git a/src/main/java/org/thoughtcrime/securesms/relay/RelayListActivity.java b/src/main/java/org/thoughtcrime/securesms/relay/RelayListActivity.java index 0aff977c3..35e8b0210 100644 --- a/src/main/java/org/thoughtcrime/securesms/relay/RelayListActivity.java +++ b/src/main/java/org/thoughtcrime/securesms/relay/RelayListActivity.java @@ -51,6 +51,7 @@ public class RelayListActivity extends BaseActionBarActivity /** QR provided via Intent extras needs to be saved to pass it to QrCodeHandler when authorization finishes */ private String qrData = null; private ActivityResultLauncher screenLockLauncher; + private ActivityResultLauncher qrScannerLauncher; /** Relay selected for context menu via onRelayLongClick() */ private EnteredLoginParam contextMenuRelay = null; @@ -60,6 +61,15 @@ public class RelayListActivity extends BaseActionBarActivity super.onCreate(savedInstanceState); setContentView(R.layout.activity_relay_list); + qrScannerLauncher = registerForActivityResult( + new ActivityResultContracts.StartActivityForResult(), + result -> { + if (result.getResultCode() == RESULT_OK) { + IntentResult scanResult = IntentIntegrator.parseActivityResult(result.getResultCode(), result.getData()); + new QrCodeHandler(this).handleOnlyAddRelayQr(scanResult.getContents(), null); + } + } + ); screenLockLauncher = registerForActivityResult( new ActivityResultContracts.StartActivityForResult(), result -> { @@ -103,7 +113,11 @@ public class RelayListActivity extends BaseActionBarActivity } fabAdd.setOnClickListener(v -> { - new IntentIntegrator(this).setCaptureActivity(QrActivity.class).addExtra(QrActivity.EXTRA_SCAN_RELAY, true).initiateScan(); + Intent intent = new IntentIntegrator(this) + .setCaptureActivity(QrActivity.class) + .addExtra(QrActivity.EXTRA_SCAN_RELAY, true) + .createScanIntent(); + qrScannerLauncher.launch(intent); }); LinearLayoutManager layoutManager = new LinearLayoutManager(this); @@ -239,15 +253,6 @@ public class RelayListActivity extends BaseActionBarActivity return super.onOptionsItemSelected(item); } - @Override - protected void onActivityResult(int requestCode, int resultCode, Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (resultCode == RESULT_OK && requestCode == IntentIntegrator.REQUEST_CODE) { - IntentResult scanResult = IntentIntegrator.parseActivityResult(resultCode, data); - new QrCodeHandler(this).handleOnlyAddRelayQr(scanResult.getContents(), null); - } - } - @Override public void handleEvent(@NonNull DcEvent event) { int eventId = event.getId();