import React, {useState} from 'react' import {ScrollView, StyleSheet, TouchableOpacity, View} from 'react-native' import {observer} from 'mobx-react-lite' import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' import {Slider} from '@miblanchard/react-native-slider' import {Text} from '../com/util/text/Text' import {useStores} from 'state/index' import {s, colors} from 'lib/styles' import {usePalette} from 'lib/hooks/usePalette' import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' import {isWeb} from 'platform/detection' import {ToggleButton} from 'view/com/util/forms/ToggleButton' import {CommonNavigatorParams, NativeStackScreenProps} from 'lib/routes/types' import {ViewHeader} from 'view/com/util/ViewHeader' import {CenteredView} from 'view/com/util/Views' import debounce from 'lodash.debounce' function RepliesThresholdInput({enabled}: {enabled: boolean}) { const store = useStores() const pal = usePalette('default') const [value, setValue] = useState( store.preferences.homeFeed.hideRepliesByLikeCount, ) const save = React.useMemo( () => debounce( threshold => store.preferences.setHomeFeedHideRepliesByLikeCount(threshold), 500, ), // debouce for 500ms [store], ) return ( { const threshold = Math.floor(Array.isArray(v) ? v[0] : v) setValue(threshold) save(threshold) }} minimumValue={0} maximumValue={25} containerStyle={isWeb ? undefined : s.flex1} disabled={!enabled} thumbTintColor={colors.blue3} /> {value === 0 ? `Show all replies` : `Show replies with at least ${value} ${ value > 1 ? `likes` : `like` }`} ) } type Props = NativeStackScreenProps< CommonNavigatorParams, 'PreferencesHomeFeed' > export const PreferencesHomeFeed = observer(function PreferencesHomeFeedImpl({ navigation, }: Props) { const pal = usePalette('default') const store = useStores() const {isTabletOrDesktop} = useWebMediaQueries() return ( Fine-tune the content you see on your home screen. Show Replies Set this setting to "No" to hide all replies from your feed. Reply Filters Enable this setting to only see replies between people you follow. Adjust the number of likes a reply must have to be shown in your feed. Show Reposts Set this setting to "No" to hide all reposts from your feed. Show Quote Posts Set this setting to "No" to hide all quote posts from your feed. Reposts will still be visible. Show Posts from My Feeds Set this setting to "Yes" to show samples of your saved feeds in your following feed. This is an experimental feature. { navigation.canGoBack() ? navigation.goBack() : navigation.navigate('Settings') }} style={[styles.btn, isTabletOrDesktop && styles.btnDesktop]} accessibilityRole="button" accessibilityLabel="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, }, })