From 8487c286e6e8e72bc0d03087b6905aed7feb6acb Mon Sep 17 00:00:00 2001 From: adbenitez Date: Sat, 5 Oct 2024 20:15:40 +0200 Subject: [PATCH] register app for opening ss:// and socks5:// proxy URLs also linkify proxy URLs in text messages --- src/main/AndroidManifest.xml | 17 ++++++++- .../components/emoji/EmojiTextView.java | 5 +++ .../proxy/ProxySettingsActivity.java | 37 +++++++++++++++++++ .../securesms/util/LongClickCopySpan.java | 9 ++++- 4 files changed, 66 insertions(+), 2 deletions(-) diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml index 143c3e3ea..234b8bc8d 100644 --- a/src/main/AndroidManifest.xml +++ b/src/main/AndroidManifest.xml @@ -252,7 +252,22 @@ + android:exported="true" + android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"> + + + + + + + + + + + + + + { + dcContext.setConfigFromQr(uri.toString()); + dcContext.restartIo(); + adapter.changeData(DcHelper.get(this, CONFIG_PROXY_URL)); + proxySwitch.setChecked(DcHelper.getInt(this, CONFIG_PROXY_ENABLED) == 1); + }) + .setNegativeButton(R.string.cancel, null) + .setCancelable(false) + .show(); + } else { + Toast.makeText(this, R.string.proxy_invalid, Toast.LENGTH_LONG).show(); + } + } + } + @Override public void handleEvent(@NonNull DcEvent event) { if (event.getId() == DcContext.DC_EVENT_CONNECTIVITY_CHANGED) { diff --git a/src/main/java/org/thoughtcrime/securesms/util/LongClickCopySpan.java b/src/main/java/org/thoughtcrime/securesms/util/LongClickCopySpan.java index 4108b0dbb..13a679b98 100644 --- a/src/main/java/org/thoughtcrime/securesms/util/LongClickCopySpan.java +++ b/src/main/java/org/thoughtcrime/securesms/util/LongClickCopySpan.java @@ -81,7 +81,14 @@ public class LongClickCopySpan extends ClickableSpan { QrCodeHandler qrCodeHandler = new QrCodeHandler((Activity) widget.getContext()); qrCodeHandler.handleQrData(url); } else { - IntentUtils.showBrowserIntent(widget.getContext(), url); + Activity activity = (Activity) widget.getContext(); + DcContext dcContext = DcHelper.getContext(activity); + if (dcContext.checkQr(url).getState() == DcContext.DC_QR_PROXY) { + QrCodeHandler qrCodeHandler = new QrCodeHandler(activity); + qrCodeHandler.handleQrData(url); + } else { + IntentUtils.showBrowserIntent(widget.getContext(), url); + } } }