From 0a4f1ded540afc068a1d06751523722b79af8b43 Mon Sep 17 00:00:00 2001 From: "B. Petersen" Date: Thu, 11 Dec 2025 17:46:23 +0100 Subject: [PATCH 1/8] tune down 'account' wording --- src/main/res/values/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index 327bea926..c68e467ca 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -611,7 +611,7 @@ Create New Profile I Already Have a Profile - + Use Classic Email as Relay Your Profile @@ -636,7 +636,7 @@ Secure Decentralized Chat Scan Invitation Code Log In - This login is for advanced users:\n\n• Do not use an account you\'re using in another app.\n\n• Classic email server allow chats without end-to-end encryption marked by a mail icon. + This login is for advanced users:\n\n• Do not use an address you\'re using in another app.\n\n• Classic email server allow chats without end-to-end encryption marked by a mail icon. Inbox IMAP Login Name IMAP Server From fa795dd149e01abfdfc0df82aef5d54dc131d0e3 Mon Sep 17 00:00:00 2001 From: adbenitez Date: Fri, 12 Dec 2025 14:28:17 +0100 Subject: [PATCH 2/8] add more logging --- .../java/org/thoughtcrime/securesms/ApplicationContext.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java b/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java index e17fb166c..78f7107bd 100644 --- a/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java +++ b/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java @@ -89,7 +89,9 @@ public class ApplicationContext extends MultiDexApplication { System.loadLibrary("native-utils"); dcAccounts = new DcAccounts(new File(getFilesDir(), "accounts").getAbsolutePath()); + Log.i(TAG, "DcAccounts created"); rpc = new Rpc(new FFITransport(dcAccounts.getJsonrpcInstance())); + Log.i(TAG, "Rpc created"); AccountManager.getInstance().migrateToDcAccounts(this); // October-2025 migration: delete deprecated "permanent channel" id @@ -98,6 +100,7 @@ public class ApplicationContext extends MultiDexApplication { // end October-2025 migration int[] allAccounts = dcAccounts.getAll(); + Log.i(TAG, "Number of profiles: " + allAccounts.length); for (int accountId : allAccounts) { DcContext ac = dcAccounts.getAccount(accountId); if (!ac.isOpen()) { @@ -128,7 +131,9 @@ public class ApplicationContext extends MultiDexApplication { notificationCenter = new NotificationCenter(this); eventCenter = new DcEventCenter(this); new Thread(() -> { + Log.i(TAG, "Starting event loop"); DcEventEmitter emitter = dcAccounts.getEventEmitter(); + Log.i(TAG, "DcEventEmitter obtained"); while (true) { DcEvent event = emitter.getNextEvent(); if (event==null) { From b0ca48740a9ddf79b448365e0d562f937ec146c4 Mon Sep 17 00:00:00 2001 From: adbenitez Date: Fri, 12 Dec 2025 15:01:41 +0100 Subject: [PATCH 3/8] avoid NPE in InstantOnboardingActivity.onCreate --- .../securesms/InstantOnboardingActivity.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/thoughtcrime/securesms/InstantOnboardingActivity.java b/src/main/java/org/thoughtcrime/securesms/InstantOnboardingActivity.java index f9d6ded94..057f106b2 100644 --- a/src/main/java/org/thoughtcrime/securesms/InstantOnboardingActivity.java +++ b/src/main/java/org/thoughtcrime/securesms/InstantOnboardingActivity.java @@ -111,12 +111,14 @@ public class InstantOnboardingActivity extends BaseActionBarActivity implements 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 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; + Uri uri = getIntent().getData(); + if (uri != null) { + Intent intent = new Intent(this, RelayListActivity.class); + intent.putExtra(RelayListActivity.EXTRA_QR_DATA, uri.toString()); + startActivity(intent); + finish(); + return; + } } getOnBackPressedDispatcher().addCallback(this, new OnBackPressedCallback(!fromWelcome) { From fbc01ff0a294b3b477455115d58efe389463e71d Mon Sep 17 00:00:00 2001 From: adbenitez Date: Fri, 12 Dec 2025 15:05:04 +0100 Subject: [PATCH 4/8] switch to new profile if no URI is available --- .../org/thoughtcrime/securesms/InstantOnboardingActivity.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/org/thoughtcrime/securesms/InstantOnboardingActivity.java b/src/main/java/org/thoughtcrime/securesms/InstantOnboardingActivity.java index 057f106b2..c9b370ec2 100644 --- a/src/main/java/org/thoughtcrime/securesms/InstantOnboardingActivity.java +++ b/src/main/java/org/thoughtcrime/securesms/InstantOnboardingActivity.java @@ -119,6 +119,7 @@ public class InstantOnboardingActivity extends BaseActionBarActivity implements finish(); return; } + AccountManager.getInstance().beginAccountCreation(this); } getOnBackPressedDispatcher().addCallback(this, new OnBackPressedCallback(!fromWelcome) { From 68f95333927a4d32953742a6b60deec12d1f4c0f Mon Sep 17 00:00:00 2001 From: adbenitez Date: Fri, 12 Dec 2025 16:29:01 +0100 Subject: [PATCH 5/8] Allow to add relay from clipboard or image if camera permission is not granted --- CHANGELOG.md | 4 ++++ src/main/java/org/thoughtcrime/securesms/qr/QrActivity.java | 6 +++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e4513f399..24bda9601 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Delta Chat Android Changelog +## Unreleased + +* Allow to add relay from clipboard or image if camera permission is not granted + ## v2.33.1 2025-12 diff --git a/src/main/java/org/thoughtcrime/securesms/qr/QrActivity.java b/src/main/java/org/thoughtcrime/securesms/qr/QrActivity.java index 4676930e8..26cfdcf6b 100644 --- a/src/main/java/org/thoughtcrime/securesms/qr/QrActivity.java +++ b/src/main/java/org/thoughtcrime/securesms/qr/QrActivity.java @@ -109,8 +109,8 @@ public class QrActivity extends BaseActionBarActivity implements View.OnClickLis .withPermanentDenialDialog(getString(R.string.perm_explain_access_to_camera_denied)) .onAllGranted(() -> ((QrScanFragment) adapter.getItem(TAB_SCAN)).handleQrScanWithPermissions(QrActivity.this)) .onAnyDenied(() -> { - if (scanRelay) { - finish(); + if (!scanRelay) { + Toast.makeText(this, getString(R.string.chat_camera_unavailable), Toast.LENGTH_LONG).show(); } else { viewPager.setCurrentItem(TAB_SHOW); } @@ -162,7 +162,7 @@ public class QrActivity extends BaseActionBarActivity implements View.OnClickLis && Manifest.permission.CAMERA.equals(permissions[0]) && grantResults[0] == PackageManager.PERMISSION_DENIED) { if (scanRelay) { - finish(); + Toast.makeText(this, getString(R.string.chat_camera_unavailable), Toast.LENGTH_LONG).show(); } else { viewPager.setCurrentItem(TAB_SHOW); } From 12c2237e0045cfb4992d54ef6e804019abd34951 Mon Sep 17 00:00:00 2001 From: adbenitez Date: Fri, 12 Dec 2025 16:30:58 +0100 Subject: [PATCH 6/8] remove leftover --- src/main/java/org/thoughtcrime/securesms/qr/QrActivity.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/thoughtcrime/securesms/qr/QrActivity.java b/src/main/java/org/thoughtcrime/securesms/qr/QrActivity.java index 26cfdcf6b..44bd08cae 100644 --- a/src/main/java/org/thoughtcrime/securesms/qr/QrActivity.java +++ b/src/main/java/org/thoughtcrime/securesms/qr/QrActivity.java @@ -109,7 +109,7 @@ public class QrActivity extends BaseActionBarActivity implements View.OnClickLis .withPermanentDenialDialog(getString(R.string.perm_explain_access_to_camera_denied)) .onAllGranted(() -> ((QrScanFragment) adapter.getItem(TAB_SCAN)).handleQrScanWithPermissions(QrActivity.this)) .onAnyDenied(() -> { - if (!scanRelay) { + if (scanRelay) { Toast.makeText(this, getString(R.string.chat_camera_unavailable), Toast.LENGTH_LONG).show(); } else { viewPager.setCurrentItem(TAB_SHOW); From 85c68d04852db7f79a25309bda48b056c6eb0797 Mon Sep 17 00:00:00 2001 From: "B. Petersen" Date: Fri, 12 Dec 2025 16:24:02 +0100 Subject: [PATCH 7/8] remove dead account-creation-from-qr code --- .../securesms/InstantOnboardingActivity.java | 11 ----------- .../securesms/connect/AccountManager.java | 8 -------- 2 files changed, 19 deletions(-) diff --git a/src/main/java/org/thoughtcrime/securesms/InstantOnboardingActivity.java b/src/main/java/org/thoughtcrime/securesms/InstantOnboardingActivity.java index f9d6ded94..b8f4862ee 100644 --- a/src/main/java/org/thoughtcrime/securesms/InstantOnboardingActivity.java +++ b/src/main/java/org/thoughtcrime/securesms/InstantOnboardingActivity.java @@ -74,7 +74,6 @@ public class InstantOnboardingActivity extends BaseActionBarActivity implements private static final String INSTANCES_URL = "https://chatmail.at/relays"; private static final String DEFAULT_CHATMAIL_HOST = "nine.testrun.org"; - public static final String QR_ACCOUNT_EXTRA = "qr_account_extra"; public static final String FROM_WELCOME = "from_welcome"; private static final int REQUEST_CODE_AVATAR = 1; @@ -239,16 +238,6 @@ public class InstantOnboardingActivity extends BaseActionBarActivity implements Permissions.onRequestPermissionsResult(this, requestCode, permissions, grantResults); } - @Override - public void onStart() { - super.onStart(); - String accountQr = getIntent().getStringExtra(QR_ACCOUNT_EXTRA); - if (accountQr != null) { - getIntent().removeExtra(QR_ACCOUNT_EXTRA); - setProviderFromQr(accountQr); - } - } - @Override protected void onPause() { super.onPause(); diff --git a/src/main/java/org/thoughtcrime/securesms/connect/AccountManager.java b/src/main/java/org/thoughtcrime/securesms/connect/AccountManager.java index 4997bdf37..12d98b51c 100644 --- a/src/main/java/org/thoughtcrime/securesms/connect/AccountManager.java +++ b/src/main/java/org/thoughtcrime/securesms/connect/AccountManager.java @@ -152,14 +152,6 @@ public class AccountManager { dialog.show(((FragmentActivity) activity).getSupportFragmentManager(), null); } - public void addAccountFromQr(Activity activity, String qr) { - beginAccountCreation(activity); - activity.finishAffinity(); - Intent intent = new Intent(activity, InstantOnboardingActivity.class); - intent.putExtra(InstantOnboardingActivity.QR_ACCOUNT_EXTRA, qr); - activity.startActivity(intent); - } - public void addAccountFromSecondDevice(Activity activity, String backupQr) { switchAccountAndStartActivity(activity, 0, backupQr); } From 0a44d00451811a788b5c651411cc0c3f1c960c91 Mon Sep 17 00:00:00 2001 From: adbenitez Date: Fri, 12 Dec 2025 17:04:36 +0100 Subject: [PATCH 8/8] add comment --- .../org/thoughtcrime/securesms/InstantOnboardingActivity.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/org/thoughtcrime/securesms/InstantOnboardingActivity.java b/src/main/java/org/thoughtcrime/securesms/InstantOnboardingActivity.java index c9b370ec2..aa85a4113 100644 --- a/src/main/java/org/thoughtcrime/securesms/InstantOnboardingActivity.java +++ b/src/main/java/org/thoughtcrime/securesms/InstantOnboardingActivity.java @@ -119,6 +119,7 @@ public class InstantOnboardingActivity extends BaseActionBarActivity implements finish(); return; } + // if URI is unexpectedly null, then fallback to new profile creation AccountManager.getInstance().beginAccountCreation(this); }