1package eu.siacs.conversations.ui.fragment.settings;
2
3import android.os.Bundle;
4import android.widget.Toast;
5
6import androidx.annotation.NonNull;
7import androidx.annotation.Nullable;
8
9import com.google.common.base.Strings;
10
11import eu.siacs.conversations.AppSettings;
12import eu.siacs.conversations.Config;
13import eu.siacs.conversations.R;
14import eu.siacs.conversations.services.QuickConversationsService;
15
16public class ConnectionSettingsFragment extends XmppPreferenceFragment {
17
18 private static final String GROUPS_AND_CONFERENCES = "groups_and_conferences";
19
20 public static boolean hideChannelDiscovery() {
21 return QuickConversationsService.isQuicksy()
22 || QuickConversationsService.isPlayStoreFlavor()
23 || Strings.isNullOrEmpty(Config.CHANNEL_DISCOVERY);
24 }
25
26 @Override
27 public void onCreatePreferences(@Nullable Bundle savedInstanceState, @Nullable String rootKey) {
28 setPreferencesFromResource(R.xml.preferences_connection, rootKey);
29 final var channelDiscovery = findPreference(AppSettings.CHANNEL_DISCOVERY_METHOD);
30 final var groupsAndConferences = findPreference(GROUPS_AND_CONFERENCES);
31 if (channelDiscovery == null || groupsAndConferences == null) {
32 throw new IllegalStateException();
33 }
34 if (hideChannelDiscovery()) {
35 groupsAndConferences.setVisible(false);
36 channelDiscovery.setVisible(false);
37 }
38 }
39
40 @Override
41 protected void onSharedPreferenceChanged(@NonNull String key) {
42 super.onSharedPreferenceChanged(key);
43 switch (key) {
44 case AppSettings.USE_TOR -> {
45 final var appSettings = new AppSettings(requireContext());
46 if (appSettings.isUseTor()) {
47 runOnUiThread(
48 () ->
49 Toast.makeText(
50 requireActivity(),
51 R.string.audio_video_disabled_tor,
52 Toast.LENGTH_LONG)
53 .show());
54 }
55 reconnectAccounts();
56 requireService().reinitializeMuclumbusService();
57 }
58 case AppSettings.SHOW_CONNECTION_OPTIONS -> {
59 reconnectAccounts();
60 }
61 }
62 }
63
64 @Override
65 public void onStart() {
66 super.onStart();
67 requireActivity().setTitle(R.string.pref_connection_options);
68 }
69}