import React from 'react' import { ActivityIndicator, ScrollView, StyleSheet, TouchableOpacity, View, } from 'react-native' import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' import {Text} from '../com/util/text/Text' import {s, colors} from 'lib/styles' import {usePalette} from 'lib/hooks/usePalette' import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' import {ToggleButton} from 'view/com/util/forms/ToggleButton' import {RadioGroup} from 'view/com/util/forms/RadioGroup' import {CommonNavigatorParams, NativeStackScreenProps} from 'lib/routes/types' import {ViewHeader} from 'view/com/util/ViewHeader' import {CenteredView} from 'view/com/util/Views' import {Trans, msg} from '@lingui/macro' import {useLingui} from '@lingui/react' import { usePreferencesQuery, useSetThreadViewPreferencesMutation, } from '#/state/queries/preferences' type Props = NativeStackScreenProps export function PreferencesThreads({navigation}: Props) { const pal = usePalette('default') const {_} = useLingui() const {isTabletOrDesktop} = useWebMediaQueries() const {data: preferences} = usePreferencesQuery() const {mutate: setThreadViewPrefs, variables} = useSetThreadViewPreferencesMutation() const prioritizeFollowedUsers = Boolean( variables?.prioritizeFollowedUsers ?? preferences?.threadViewPrefs?.prioritizeFollowedUsers, ) const treeViewEnabled = Boolean( variables?.lab_treeViewEnabled ?? preferences?.threadViewPrefs?.lab_treeViewEnabled, ) return ( Fine-tune the discussion threads. {preferences ? ( Sort Replies Sort replies to the same post by: setThreadViewPrefs({sort: key})} initialSelection={preferences?.threadViewPrefs?.sort} /> Prioritize Your Follows Show replies by people you follow before all other replies. setThreadViewPrefs({ prioritizeFollowedUsers: !prioritizeFollowedUsers, }) } /> {' '} Threaded Mode Set this setting to "Yes" to show replies in a threaded view. This is an experimental feature. setThreadViewPrefs({ lab_treeViewEnabled: !treeViewEnabled, }) } /> ) : ( )} { navigation.canGoBack() ? navigation.goBack() : navigation.navigate('Settings') }} style={[styles.btn, isTabletOrDesktop && styles.btnDesktop]} accessibilityRole="button" accessibilityLabel={_(msg`Confirm`)} accessibilityHint=""> Done ) } const styles = StyleSheet.create({ container: { flex: 1, paddingBottom: 90, }, desktopContainer: { borderLeftWidth: 1, borderRightWidth: 1, paddingBottom: 40, }, titleSection: { paddingBottom: 30, }, title: { textAlign: 'center', marginBottom: 5, }, description: { textAlign: 'center', paddingHorizontal: 32, }, cardsContainer: { paddingHorizontal: 20, }, card: { padding: 16, borderRadius: 10, marginBottom: 20, }, btn: { flexDirection: 'row', alignItems: 'center', justifyContent: 'center', borderRadius: 32, padding: 14, backgroundColor: colors.blue3, }, btnDesktop: { marginHorizontal: 'auto', paddingHorizontal: 80, }, btnContainer: { paddingTop: 20, }, dimmed: { opacity: 0.3, }, })