Move home feed and thread preferences to server (#1507)
* Move home feed and thread preferences to server * Fix thread usage of prefs * Remove log * Bump @atproto/api@0.6.16 * Improve type usage
This commit is contained in:
parent
28b692a118
commit
8584009bae
8 changed files with 205 additions and 162 deletions
|
@ -76,7 +76,7 @@ export const PostThreadScreen = withAuthRequired(
|
|||
uri={uri}
|
||||
view={view}
|
||||
onPressReply={onPressReply}
|
||||
treeView={store.preferences.threadTreeViewEnabled}
|
||||
treeView={!!store.preferences.thread.lab_treeViewEnabled}
|
||||
/>
|
||||
</View>
|
||||
{isMobile && !store.shell.minimalShellMode && (
|
||||
|
|
|
@ -13,11 +13,23 @@ 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.homeFeedRepliesThreshold)
|
||||
const [value, setValue] = useState(
|
||||
store.preferences.homeFeed.hideRepliesByLikeCount,
|
||||
)
|
||||
const save = React.useMemo(
|
||||
() =>
|
||||
debounce(
|
||||
threshold =>
|
||||
store.preferences.setHomeFeedHideRepliesByLikeCount(threshold),
|
||||
500,
|
||||
), // debouce for 500ms
|
||||
[store],
|
||||
)
|
||||
|
||||
return (
|
||||
<View style={[!enabled && styles.dimmed]}>
|
||||
|
@ -26,7 +38,7 @@ function RepliesThresholdInput({enabled}: {enabled: boolean}) {
|
|||
onValueChange={(v: number | number[]) => {
|
||||
const threshold = Math.floor(Array.isArray(v) ? v[0] : v)
|
||||
setValue(threshold)
|
||||
store.preferences.setHomeFeedRepliesThreshold(threshold)
|
||||
save(threshold)
|
||||
}}
|
||||
minimumValue={0}
|
||||
maximumValue={25}
|
||||
|
@ -88,16 +100,16 @@ export const PreferencesHomeFeed = observer(function PreferencesHomeFeedImpl({
|
|||
<ToggleButton
|
||||
testID="toggleRepliesBtn"
|
||||
type="default-light"
|
||||
label={store.preferences.homeFeedRepliesEnabled ? 'Yes' : 'No'}
|
||||
isSelected={store.preferences.homeFeedRepliesEnabled}
|
||||
onPress={store.preferences.toggleHomeFeedRepliesEnabled}
|
||||
label={store.preferences.homeFeed.hideReplies ? 'No' : 'Yes'}
|
||||
isSelected={!store.preferences.homeFeed.hideReplies}
|
||||
onPress={store.preferences.toggleHomeFeedHideReplies}
|
||||
/>
|
||||
</View>
|
||||
<View
|
||||
style={[
|
||||
pal.viewLight,
|
||||
styles.card,
|
||||
!store.preferences.homeFeedRepliesEnabled && styles.dimmed,
|
||||
store.preferences.homeFeed.hideReplies && styles.dimmed,
|
||||
]}>
|
||||
<Text type="title-sm" style={[pal.text, s.pb5]}>
|
||||
Reply Filters
|
||||
|
@ -108,12 +120,10 @@ export const PreferencesHomeFeed = observer(function PreferencesHomeFeedImpl({
|
|||
<ToggleButton
|
||||
type="default-light"
|
||||
label="Followed users only"
|
||||
isSelected={
|
||||
store.preferences.homeFeedRepliesByFollowedOnlyEnabled
|
||||
}
|
||||
isSelected={store.preferences.homeFeed.hideRepliesByUnfollowed}
|
||||
onPress={
|
||||
store.preferences.homeFeedRepliesEnabled
|
||||
? store.preferences.toggleHomeFeedRepliesByFollowedOnlyEnabled
|
||||
!store.preferences.homeFeed.hideReplies
|
||||
? store.preferences.toggleHomeFeedHideRepliesByUnfollowed
|
||||
: undefined
|
||||
}
|
||||
style={[s.mb10]}
|
||||
|
@ -123,7 +133,7 @@ export const PreferencesHomeFeed = observer(function PreferencesHomeFeedImpl({
|
|||
feed.
|
||||
</Text>
|
||||
<RepliesThresholdInput
|
||||
enabled={store.preferences.homeFeedRepliesEnabled}
|
||||
enabled={!store.preferences.homeFeed.hideReplies}
|
||||
/>
|
||||
</View>
|
||||
|
||||
|
@ -136,9 +146,9 @@ export const PreferencesHomeFeed = observer(function PreferencesHomeFeedImpl({
|
|||
</Text>
|
||||
<ToggleButton
|
||||
type="default-light"
|
||||
label={store.preferences.homeFeedRepostsEnabled ? 'Yes' : 'No'}
|
||||
isSelected={store.preferences.homeFeedRepostsEnabled}
|
||||
onPress={store.preferences.toggleHomeFeedRepostsEnabled}
|
||||
label={store.preferences.homeFeed.hideReposts ? 'No' : 'Yes'}
|
||||
isSelected={!store.preferences.homeFeed.hideReposts}
|
||||
onPress={store.preferences.toggleHomeFeedHideReposts}
|
||||
/>
|
||||
</View>
|
||||
|
||||
|
@ -152,9 +162,9 @@ export const PreferencesHomeFeed = observer(function PreferencesHomeFeedImpl({
|
|||
</Text>
|
||||
<ToggleButton
|
||||
type="default-light"
|
||||
label={store.preferences.homeFeedQuotePostsEnabled ? 'Yes' : 'No'}
|
||||
isSelected={store.preferences.homeFeedQuotePostsEnabled}
|
||||
onPress={store.preferences.toggleHomeFeedQuotePostsEnabled}
|
||||
label={store.preferences.homeFeed.hideQuotePosts ? 'No' : 'Yes'}
|
||||
isSelected={!store.preferences.homeFeed.hideQuotePosts}
|
||||
onPress={store.preferences.toggleHomeFeedHideQuotePosts}
|
||||
/>
|
||||
</View>
|
||||
|
||||
|
@ -169,8 +179,10 @@ export const PreferencesHomeFeed = observer(function PreferencesHomeFeedImpl({
|
|||
</Text>
|
||||
<ToggleButton
|
||||
type="default-light"
|
||||
label={store.preferences.homeFeedMergeFeedEnabled ? 'Yes' : 'No'}
|
||||
isSelected={store.preferences.homeFeedMergeFeedEnabled}
|
||||
label={
|
||||
store.preferences.homeFeed.lab_mergeFeedEnabled ? 'Yes' : 'No'
|
||||
}
|
||||
isSelected={!!store.preferences.homeFeed.lab_mergeFeedEnabled}
|
||||
onPress={store.preferences.toggleHomeFeedMergeFeedEnabled}
|
||||
/>
|
||||
</View>
|
||||
|
|
|
@ -59,8 +59,8 @@ export const PreferencesThreads = observer(function PreferencesThreadsImpl({
|
|||
{key: 'most-likes', label: 'Most-liked replies first'},
|
||||
{key: 'random', label: 'Random (aka "Poster\'s Roulette")'},
|
||||
]}
|
||||
onSelect={store.preferences.setThreadDefaultSort}
|
||||
initialSelection={store.preferences.threadDefaultSort}
|
||||
onSelect={store.preferences.setThreadSort}
|
||||
initialSelection={store.preferences.thread.sort}
|
||||
/>
|
||||
</View>
|
||||
</View>
|
||||
|
@ -74,9 +74,11 @@ export const PreferencesThreads = observer(function PreferencesThreadsImpl({
|
|||
</Text>
|
||||
<ToggleButton
|
||||
type="default-light"
|
||||
label={store.preferences.threadFollowedUsersFirst ? 'Yes' : 'No'}
|
||||
isSelected={store.preferences.threadFollowedUsersFirst}
|
||||
onPress={store.preferences.toggleThreadFollowedUsersFirst}
|
||||
label={
|
||||
store.preferences.thread.prioritizeFollowedUsers ? 'Yes' : 'No'
|
||||
}
|
||||
isSelected={store.preferences.thread.prioritizeFollowedUsers}
|
||||
onPress={store.preferences.togglePrioritizedFollowedUsers}
|
||||
/>
|
||||
</View>
|
||||
|
||||
|
@ -91,8 +93,10 @@ export const PreferencesThreads = observer(function PreferencesThreadsImpl({
|
|||
</Text>
|
||||
<ToggleButton
|
||||
type="default-light"
|
||||
label={store.preferences.threadTreeViewEnabled ? 'Yes' : 'No'}
|
||||
isSelected={store.preferences.threadTreeViewEnabled}
|
||||
label={
|
||||
store.preferences.thread.lab_treeViewEnabled ? 'Yes' : 'No'
|
||||
}
|
||||
isSelected={!!store.preferences.thread.lab_treeViewEnabled}
|
||||
onPress={store.preferences.toggleThreadTreeViewEnabled}
|
||||
/>
|
||||
</View>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue