From 5954b13440c2e56b3c0f8be986d52f66779124fc Mon Sep 17 00:00:00 2001 From: adbenitez Date: Mon, 21 Oct 2024 21:31:06 +0200 Subject: [PATCH] allow to paste from clipboard in RegistrationQrActivity --- .../securesms/InstantOnboardingActivity.java | 12 ++++++++--- .../securesms/WelcomeActivity.java | 21 +++++++++++++------ .../securesms/qr/RegistrationQrActivity.java | 8 +++++++ .../res/menu/registration_qr_activity.xml | 4 ++++ 4 files changed, 36 insertions(+), 9 deletions(-) diff --git a/src/main/java/org/thoughtcrime/securesms/InstantOnboardingActivity.java b/src/main/java/org/thoughtcrime/securesms/InstantOnboardingActivity.java index b764af3ad..109fac7c8 100644 --- a/src/main/java/org/thoughtcrime/securesms/InstantOnboardingActivity.java +++ b/src/main/java/org/thoughtcrime/securesms/InstantOnboardingActivity.java @@ -194,9 +194,15 @@ public class InstantOnboardingActivity extends BaseActionBarActivity implements break; case IntentIntegrator.REQUEST_CODE: - IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, data); - if (scanResult != null && scanResult.getFormatName() != null) { - setProviderFromQr(scanResult.getContents()); + String qrRaw = data.getStringExtra(RegistrationQrActivity.QRDATA_EXTRA); + if (qrRaw == null) { + IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, data); + if (scanResult != null && scanResult.getFormatName() != null) { + qrRaw = scanResult.getContents(); + } + } + if (qrRaw != null) { + setProviderFromQr(qrRaw); } break; } diff --git a/src/main/java/org/thoughtcrime/securesms/WelcomeActivity.java b/src/main/java/org/thoughtcrime/securesms/WelcomeActivity.java index 154cdd4eb..76d532cfd 100644 --- a/src/main/java/org/thoughtcrime/securesms/WelcomeActivity.java +++ b/src/main/java/org/thoughtcrime/securesms/WelcomeActivity.java @@ -336,20 +336,29 @@ public class WelcomeActivity extends BaseActionBarActivity implements DcEventCen @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(requestCode, resultCode, data); - if (scanResult == null || scanResult.getFormatName() == null) { - return; // aborted + String qrRaw = data.getStringExtra(RegistrationQrActivity.QRDATA_EXTRA); + if (qrRaw == null) { + IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, data); + if (scanResult == null || scanResult.getFormatName() == null) { + return; // aborted + } + qrRaw = scanResult.getContents(); } - String qrRaw = scanResult.getContents(); DcLot qrParsed = dcContext.checkQr(qrRaw); switch (qrParsed.getState()) { case DcContext.DC_QR_BACKUP: case DcContext.DC_QR_BACKUP2: - new AlertDialog.Builder(this) + final String finalQrRaw = qrRaw; + new AlertDialog.Builder(this) .setTitle(R.string.multidevice_receiver_title) .setMessage(R.string.multidevice_receiver_scanning_ask) - .setPositiveButton(R.string.perm_continue, (dialog, which) -> startBackupTransfer(qrRaw)) + .setPositiveButton(R.string.perm_continue, (dialog, which) -> startBackupTransfer(finalQrRaw)) .setNegativeButton(R.string.cancel, null) .setCancelable(false) .show(); diff --git a/src/main/java/org/thoughtcrime/securesms/qr/RegistrationQrActivity.java b/src/main/java/org/thoughtcrime/securesms/qr/RegistrationQrActivity.java index b2d03ec79..38643c67c 100644 --- a/src/main/java/org/thoughtcrime/securesms/qr/RegistrationQrActivity.java +++ b/src/main/java/org/thoughtcrime/securesms/qr/RegistrationQrActivity.java @@ -18,10 +18,12 @@ import org.thoughtcrime.securesms.BaseActionBarActivity; import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.connect.DcHelper; import org.thoughtcrime.securesms.permissions.Permissions; +import org.thoughtcrime.securesms.util.Util; public class RegistrationQrActivity extends BaseActionBarActivity { public static final String ADD_AS_SECOND_DEVICE_EXTRA = "add_as_second_device"; + public static final String QRDATA_EXTRA = "qrdata"; private CaptureManager capture; @@ -82,6 +84,12 @@ public class RegistrationQrActivity extends BaseActionBarActivity { case R.id.troubleshooting: DcHelper.openHelp(this, "#multiclient"); return true; + case R.id.menu_paste: + Intent intent = new Intent(); + intent.putExtra(QRDATA_EXTRA, Util.getTextFromClipboard(this)); + setResult(Activity.RESULT_OK, intent); + finish(); + return true; } return false; diff --git a/src/main/res/menu/registration_qr_activity.xml b/src/main/res/menu/registration_qr_activity.xml index 6d3c7d973..5076245df 100644 --- a/src/main/res/menu/registration_qr_activity.xml +++ b/src/main/res/menu/registration_qr_activity.xml @@ -2,6 +2,10 @@ + +