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 connectionOptions = findPreference(AppSettings.SHOW_CONNECTION_OPTIONS);
30        final var channelDiscovery = findPreference(AppSettings.CHANNEL_DISCOVERY_METHOD);
31        final var groupsAndConferences = findPreference(GROUPS_AND_CONFERENCES);
32        if (connectionOptions == null || channelDiscovery == null || groupsAndConferences == null) {
33            throw new IllegalStateException();
34        }
35        if (QuickConversationsService.isQuicksy()) {
36            connectionOptions.setVisible(false);
37        }
38        if (hideChannelDiscovery()) {
39            groupsAndConferences.setVisible(false);
40            channelDiscovery.setVisible(false);
41        }
42    }
43
44    @Override
45    protected void onSharedPreferenceChanged(@NonNull String key) {
46        super.onSharedPreferenceChanged(key);
47        switch (key) {
48            case AppSettings.USE_TOR -> {
49                final var appSettings = new AppSettings(requireContext());
50                if (appSettings.isUseTor()) {
51                    runOnUiThread(
52                            () ->
53                                    Toast.makeText(
54                                                    requireActivity(),
55                                                    R.string.audio_video_disabled_tor,
56                                                    Toast.LENGTH_LONG)
57                                            .show());
58                }
59                reconnectAccounts();
60                requireService().reinitializeMuclumbusService();
61            }
62            case AppSettings.SHOW_CONNECTION_OPTIONS -> {
63                reconnectAccounts();
64            }
65        }
66    }
67
68    @Override
69    public void onStart() {
70        super.onStart();
71        requireActivity().setTitle(R.string.pref_connection_options);
72    }
73}