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,
},
})