diff --git a/src/main/java/com/b44t/messenger/DcContext.java b/src/main/java/com/b44t/messenger/DcContext.java
index 51e098fb1..e5ed7082c 100644
--- a/src/main/java/com/b44t/messenger/DcContext.java
+++ b/src/main/java/com/b44t/messenger/DcContext.java
@@ -263,6 +263,11 @@ public class DcContext {
return oauth2url.startsWith("https://accounts.google.com/");
}
+ public void restartIo() {
+ stopIo();
+ startIo();
+ }
+
/**
* @return true if at least one chat has location streaming enabled
*/
diff --git a/src/main/java/org/thoughtcrime/securesms/proxy/ProxySettingsActivity.java b/src/main/java/org/thoughtcrime/securesms/proxy/ProxySettingsActivity.java
index 3dcb023e3..60310f3e0 100644
--- a/src/main/java/org/thoughtcrime/securesms/proxy/ProxySettingsActivity.java
+++ b/src/main/java/org/thoughtcrime/securesms/proxy/ProxySettingsActivity.java
@@ -58,7 +58,7 @@ public class ProxySettingsActivity extends BaseActionBarActivity
showAddProxyDialog();
} else {
DcHelper.set(this, CONFIG_PROXY_ENABLED, proxySwitch.isChecked()? "1" : "0");
- restartIO();
+ DcHelper.getContext(this).restartIo();
}
});
@@ -96,7 +96,7 @@ public class ProxySettingsActivity extends BaseActionBarActivity
@Override
public void onItemClick(String proxyUrl) {
if (DcHelper.getContext(this).setConfigFromQr(proxyUrl)) {
- restartIO();
+ DcHelper.getContext(this).restartIo();
adapter.setSelectedProxy(proxyUrl);
proxySwitch.setChecked(DcHelper.getInt(this, CONFIG_PROXY_ENABLED) == 1);
} else {
@@ -137,7 +137,7 @@ public class ProxySettingsActivity extends BaseActionBarActivity
}
String proxyUrls = String.join("\n", proxies);
DcHelper.set(this, CONFIG_PROXY_URL, proxyUrls);
- restartIO();
+ DcHelper.getContext(this).restartIo();
adapter.changeData(proxyUrls);
}
@@ -156,7 +156,7 @@ public class ProxySettingsActivity extends BaseActionBarActivity
final DcLot qrParsed = dcContext.checkQr(newProxy);
if (qrParsed.getState() == DcContext.DC_QR_PROXY) {
dcContext.setConfigFromQr(newProxy);
- restartIO();
+ DcHelper.getContext(this).restartIo();
adapter.changeData(DcHelper.get(this, CONFIG_PROXY_URL));
} else {
Toast.makeText(this, R.string.proxy_invalid, Toast.LENGTH_LONG).show();
@@ -173,12 +173,6 @@ public class ProxySettingsActivity extends BaseActionBarActivity
.show();
}
- private void restartIO() {
- DcContext dcContext = DcHelper.getContext(this);
- dcContext.stopIo();
- dcContext.startIo();
- }
-
@Override
public void handleEvent(@NonNull DcEvent event) {
if (event.getId() == DcContext.DC_EVENT_CONNECTIVITY_CHANGED) {
diff --git a/src/main/java/org/thoughtcrime/securesms/qr/QrCodeHandler.java b/src/main/java/org/thoughtcrime/securesms/qr/QrCodeHandler.java
index 34a0361bc..98a344986 100644
--- a/src/main/java/org/thoughtcrime/securesms/qr/QrCodeHandler.java
+++ b/src/main/java/org/thoughtcrime/securesms/qr/QrCodeHandler.java
@@ -89,6 +89,17 @@ public class QrCodeHandler {
BackupTransferActivity.appendSSID(activity, alertDialog.findViewById(android.R.id.message));
return;
+ case DcContext.DC_QR_PROXY:
+ builder.setTitle(R.string.proxy_use_proxy);
+ builder.setMessage(activity.getString(R.string.proxy_use_proxy_confirm, qrParsed.getText1()));
+ builder.setPositiveButton(R.string.proxy_use_proxy, (dlg, btn) -> {
+ dcContext.setConfigFromQr(rawString);
+ dcContext.restartIo();
+ });
+ builder.setNegativeButton(R.string.cancel, null);
+ builder.setCancelable(false);
+ break;
+
case DcContext.DC_QR_WEBRTC:
builder.setMessage(activity.getString(R.string.videochat_instance_from_qr, qrParsed.getText1()));
builder.setPositiveButton(R.string.ok, (dialog, which) -> {
diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml
index 4b8e7042e..e7af8b4e5 100644
--- a/src/main/res/values/strings.xml
+++ b/src/main/res/values/strings.xml
@@ -615,6 +615,7 @@
Saved Proxies
Delete Proxy
Are you sure you want to delete \"%1$s\"?
+ Do you want to use proxy \"%1$s\"?
SOCKS5