ConnectionSettingsFragment.java

 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}