Detailed changes
@@ -7,6 +7,7 @@ import androidx.annotation.BoolRes;
import androidx.annotation.NonNull;
import androidx.preference.PreferenceManager;
import com.google.common.base.Strings;
+import eu.siacs.conversations.services.QuickConversationsService;
import java.security.SecureRandom;
public class AppSettings {
@@ -121,7 +122,14 @@ public class AppSettings {
}
public boolean isUseTor() {
- return getBooleanPreference(USE_TOR, R.bool.use_tor);
+ return QuickConversationsService.isConversations()
+ && getBooleanPreference(USE_TOR, R.bool.use_tor);
+ }
+
+ public boolean isExtendedConnectionOptions() {
+ return QuickConversationsService.isConversations()
+ && getBooleanPreference(
+ AppSettings.SHOW_CONNECTION_OPTIONS, R.bool.show_connection_options);
}
public boolean isAcceptInvitesFromStrangers() {
@@ -20,6 +20,7 @@ import eu.siacs.conversations.crypto.sasl.HashedTokenSha512;
import eu.siacs.conversations.crypto.sasl.SaslMechanism;
import eu.siacs.conversations.services.AvatarService;
import eu.siacs.conversations.services.XmppConnectionService;
+import eu.siacs.conversations.utils.Resolver;
import eu.siacs.conversations.utils.UIHelper;
import eu.siacs.conversations.utils.XmppUri;
import eu.siacs.conversations.xmpp.Jid;
@@ -116,7 +117,7 @@ public class Account extends AbstractEntity implements AvatarService.Avatarable
null,
null,
null,
- 5222,
+ Resolver.XMPP_PORT_STARTTLS,
Presence.Status.ONLINE,
null,
null,
@@ -5433,12 +5433,6 @@ public class XmppConnectionService extends Service {
&& getBooleanPreference("use_tor", R.bool.use_tor);
}
- public boolean showExtendedConnectionOptions() {
- return QuickConversationsService.isConversations()
- && getBooleanPreference(
- AppSettings.SHOW_CONNECTION_OPTIONS, R.bool.show_connection_options);
- }
-
public boolean broadcastLastActivity() {
return getBooleanPreference(AppSettings.BROADCAST_LAST_ACTIVITY, R.bool.last_activity);
}
@@ -1,17 +1,18 @@
package eu.siacs.conversations.ui.fragment.settings;
import android.os.Bundle;
+import android.util.Log;
import android.widget.Toast;
-
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-
import com.google.common.base.Strings;
-
import eu.siacs.conversations.AppSettings;
import eu.siacs.conversations.Config;
import eu.siacs.conversations.R;
+import eu.siacs.conversations.entities.Account;
import eu.siacs.conversations.services.QuickConversationsService;
+import eu.siacs.conversations.utils.Resolver;
+import java.util.Arrays;
public class ConnectionSettingsFragment extends XmppPreferenceFragment {
@@ -59,9 +60,26 @@ public class ConnectionSettingsFragment extends XmppPreferenceFragment {
reconnectAccounts();
requireService().reinitializeMuclumbusService();
}
- case AppSettings.SHOW_CONNECTION_OPTIONS -> {
- reconnectAccounts();
+ case AppSettings.SHOW_CONNECTION_OPTIONS -> reconnectAccounts();
+ }
+ if (Arrays.asList(AppSettings.USE_TOR, AppSettings.SHOW_CONNECTION_OPTIONS).contains(key)) {
+ final var appSettings = new AppSettings(requireContext());
+ if (appSettings.isUseTor() || appSettings.isExtendedConnectionOptions()) {
+ return;
}
+ resetUserDefinedHostname();
+ }
+ }
+
+ private void resetUserDefinedHostname() {
+ final var service = requireService();
+ for (final Account account : service.getAccounts()) {
+ Log.d(
+ Config.LOGTAG,
+ account.getJid().asBareJid() + ": resetting hostname and port to defaults");
+ account.setHostname(null);
+ account.setPort(Resolver.XMPP_PORT_STARTTLS);
+ service.databaseBackend.updateAccount(account);
}
}
@@ -304,8 +304,8 @@ public class XmppConnection implements Runnable {
Socket localSocket;
shouldAuthenticate = !account.isOptionSet(Account.OPTION_REGISTER);
this.changeStatus(Account.State.CONNECTING);
- final boolean useTorSetting = mXmppConnectionService.useTorToConnect();
- final boolean extended = mXmppConnectionService.showExtendedConnectionOptions();
+ final boolean useTorSetting = appSettings.isUseTor();
+ final boolean extended = appSettings.isExtendedConnectionOptions();
final boolean useTor = useTorSetting || account.isOnion();
// TODO collapse Tor usage into normal connection code path
if (useTor) {
@@ -1885,8 +1885,7 @@ public class XmppConnection implements Runnable {
is = null;
}
} else {
- final boolean useTor =
- mXmppConnectionService.useTorToConnect() || account.isOnion();
+ final boolean useTor = this.appSettings.isUseTor() || account.isOnion();
try {
final String url = data.getValue("url");
final String fallbackUrl = data.getValue("captcha-fallback-url");