Clean up getPostThreadV2 settings/params in prep for future work (#9179)

* Deprecate prioritizeFollowedUsers

* Bump API package
This commit is contained in:
Eric Bailey
2025-11-06 10:42:08 -06:00
committed by GitHub
parent ec2c580aae
commit 7bf00424c4
8 changed files with 10 additions and 79 deletions
+1 -1
View File
@@ -72,7 +72,7 @@
"icons:optimize": "svgo -f ./assets/icons" "icons:optimize": "svgo -f ./assets/icons"
}, },
"dependencies": { "dependencies": {
"@atproto/api": "^0.17.6", "@atproto/api": "^0.18.0",
"@bitdrift/react-native": "^0.6.8", "@bitdrift/react-native": "^0.6.8",
"@braintree/sanitize-url": "^6.0.2", "@braintree/sanitize-url": "^6.0.2",
"@bsky.app/alf": "^0.1.5", "@bsky.app/alf": "^0.1.5",
+1 -30
View File
@@ -14,7 +14,6 @@ import {
import {atoms as a, useTheme} from '#/alf' import {atoms as a, useTheme} from '#/alf'
import * as Toggle from '#/components/forms/Toggle' import * as Toggle from '#/components/forms/Toggle'
import {Bubbles_Stroke2_Corner2_Rounded as BubblesIcon} from '#/components/icons/Bubble' import {Bubbles_Stroke2_Corner2_Rounded as BubblesIcon} from '#/components/icons/Bubble'
import {PersonGroup_Stroke2_Corner2_Rounded as PersonGroupIcon} from '#/components/icons/Person'
import {Tree_Stroke2_Corner0_Rounded as TreeIcon} from '#/components/icons/Tree' import {Tree_Stroke2_Corner0_Rounded as TreeIcon} from '#/components/icons/Tree'
import * as Layout from '#/components/Layout' import * as Layout from '#/components/Layout'
import {Text} from '#/components/Typography' import {Text} from '#/components/Typography'
@@ -24,14 +23,7 @@ type Props = NativeStackScreenProps<CommonNavigatorParams, 'PreferencesThreads'>
export function ThreadPreferencesScreen({}: Props) { export function ThreadPreferencesScreen({}: Props) {
const t = useTheme() const t = useTheme()
const {_} = useLingui() const {_} = useLingui()
const { const {sort, setSort, view, setView} = useThreadPreferences({save: true})
sort,
setSort,
view,
setView,
prioritizeFollowedUsers,
setPrioritizeFollowedUsers,
} = useThreadPreferences({save: true})
return ( return (
<Layout.Screen testID="threadPreferencesScreen"> <Layout.Screen testID="threadPreferencesScreen">
@@ -88,27 +80,6 @@ export function ThreadPreferencesScreen({}: Props) {
</View> </View>
</SettingsList.Group> </SettingsList.Group>
<SettingsList.Group contentContainerStyle={{minHeight: 0}}>
<SettingsList.ItemIcon icon={PersonGroupIcon} />
<SettingsList.ItemText>
<Trans>Prioritize your Follows</Trans>
</SettingsList.ItemText>
<Toggle.Item
type="checkbox"
name="prioritize-follows"
label={_(msg`Prioritize your Follows`)}
value={prioritizeFollowedUsers}
onChange={value => setPrioritizeFollowedUsers(value)}
style={[a.w_full, a.gap_md]}>
<Toggle.LabelText style={[a.flex_1]}>
<Trans>
Show replies by people you follow before all other replies
</Trans>
</Toggle.LabelText>
<Toggle.Platform />
</Toggle.Item>
</SettingsList.Group>
<SettingsList.Group> <SettingsList.Group>
<SettingsList.ItemIcon icon={TreeIcon} /> <SettingsList.ItemIcon icon={TreeIcon} />
<SettingsList.ItemText> <SettingsList.ItemText>
-1
View File
@@ -16,7 +16,6 @@ export const DEFAULT_HOME_FEED_PREFS: UsePreferencesQueryResponse['feedViewPrefs
export const DEFAULT_THREAD_VIEW_PREFS: ThreadViewPreferences = { export const DEFAULT_THREAD_VIEW_PREFS: ThreadViewPreferences = {
sort: 'hotness', sort: 'hotness',
prioritizeFollowedUsers: true,
lab_treeViewEnabled: false, lab_treeViewEnabled: false,
} }
+2 -9
View File
@@ -1,8 +1,4 @@
import { import {type BskyFeedViewPreference, type BskyPreferences} from '@atproto/api'
type BskyFeedViewPreference,
type BskyPreferences,
type BskyThreadViewPreference,
} from '@atproto/api'
export type UsePreferencesQueryResponse = Omit< export type UsePreferencesQueryResponse = Omit<
BskyPreferences, BskyPreferences,
@@ -18,10 +14,7 @@ export type UsePreferencesQueryResponse = Omit<
userAge: number | undefined userAge: number | undefined
} }
export type ThreadViewPreferences = Pick< export type ThreadViewPreferences = {
BskyThreadViewPreference,
'prioritizeFollowedUsers'
> & {
sort: 'hotness' | 'oldest' | 'newest' | 'most-likes' | 'random' | string sort: 'hotness' | 'oldest' | 'newest' | 'most-likes' | 'random' | string
lab_treeViewEnabled?: boolean lab_treeViewEnabled?: boolean
} }
@@ -23,8 +23,6 @@ export type ThreadPreferences = {
setSort: (sort: string) => void setSort: (sort: string) => void
view: ThreadViewOption view: ThreadViewOption
setView: (view: ThreadViewOption) => void setView: (view: ThreadViewOption) => void
prioritizeFollowedUsers: boolean
setPrioritizeFollowedUsers: (prioritize: boolean) => void
} }
export function useThreadPreferences({ export function useThreadPreferences({
@@ -43,9 +41,6 @@ export function useThreadPreferences({
treeViewEnabled: !!serverPrefs?.lab_treeViewEnabled, treeViewEnabled: !!serverPrefs?.lab_treeViewEnabled,
}), }),
) )
const [prioritizeFollowedUsers, setPrioritizeFollowedUsers] = useState(
!!serverPrefs?.prioritizeFollowedUsers,
)
/** /**
* If we get a server update, update local state * If we get a server update, update local state
@@ -59,7 +54,6 @@ export function useThreadPreferences({
* Update * Update
*/ */
setSort(normalizeSort(serverPrefs.sort)) setSort(normalizeSort(serverPrefs.sort))
setPrioritizeFollowedUsers(serverPrefs.prioritizeFollowedUsers)
setView( setView(
normalizeView({ normalizeView({
treeViewEnabled: !!serverPrefs.lab_treeViewEnabled, treeViewEnabled: !!serverPrefs.lab_treeViewEnabled,
@@ -70,7 +64,6 @@ export function useThreadPreferences({
logger.metric('thread:preferences:load', { logger.metric('thread:preferences:load', {
sort: serverPrefs.sort, sort: serverPrefs.sort,
view: serverPrefs.lab_treeViewEnabled ? 'tree' : 'linear', view: serverPrefs.lab_treeViewEnabled ? 'tree' : 'linear',
prioritizeFollowedUsers: serverPrefs.prioritizeFollowedUsers,
}) })
}) })
} }
@@ -86,7 +79,6 @@ export function useThreadPreferences({
logger.metric('thread:preferences:update', { logger.metric('thread:preferences:update', {
sort: prefs.sort, sort: prefs.sort,
view: prefs.lab_treeViewEnabled ? 'tree' : 'linear', view: prefs.lab_treeViewEnabled ? 'tree' : 'linear',
prioritizeFollowedUsers: prefs.prioritizeFollowedUsers,
}) })
} catch (e) { } catch (e) {
logger.error('useThreadPreferences failed to save', { logger.error('useThreadPreferences failed to save', {
@@ -101,7 +93,6 @@ export function useThreadPreferences({
if (save && userUpdatedPrefs.current) { if (save && userUpdatedPrefs.current) {
savePrefs({ savePrefs({
sort, sort,
prioritizeFollowedUsers,
lab_treeViewEnabled: view === 'tree', lab_treeViewEnabled: view === 'tree',
}) })
userUpdatedPrefs.current = false userUpdatedPrefs.current = false
@@ -121,13 +112,6 @@ export function useThreadPreferences({
}, },
[setView], [setView],
) )
const setPrioritizeFollowedUsersWrapped = useCallback(
(next: boolean) => {
userUpdatedPrefs.current = true
setPrioritizeFollowedUsers(next)
},
[setPrioritizeFollowedUsers],
)
return useMemo( return useMemo(
() => ({ () => ({
@@ -137,19 +121,8 @@ export function useThreadPreferences({
setSort: setSortWrapped, setSort: setSortWrapped,
view, view,
setView: setViewWrapped, setView: setViewWrapped,
prioritizeFollowedUsers,
setPrioritizeFollowedUsers: setPrioritizeFollowedUsersWrapped,
}), }),
[ [isLoaded, isSaving, sort, setSortWrapped, view, setViewWrapped],
isLoaded,
isSaving,
sort,
setSortWrapped,
view,
setViewWrapped,
prioritizeFollowedUsers,
setPrioritizeFollowedUsersWrapped,
],
) )
} }
-5
View File
@@ -49,7 +49,6 @@ export function usePostThread({anchor}: {anchor?: string}) {
setSort: baseSetSort, setSort: baseSetSort,
view, view,
setView: baseSetView, setView: baseSetView,
prioritizeFollowedUsers,
} = useThreadPreferences() } = useThreadPreferences()
const below = useMemo(() => { const below = useMemo(() => {
return view === 'linear' return view === 'linear'
@@ -63,11 +62,9 @@ export function usePostThread({anchor}: {anchor?: string}) {
anchor, anchor,
sort, sort,
view, view,
prioritizeFollowedUsers,
}) })
const postThreadOtherQueryKey = createPostThreadOtherQueryKey({ const postThreadOtherQueryKey = createPostThreadOtherQueryKey({
anchor, anchor,
prioritizeFollowedUsers,
}) })
const query = useQuery<UsePostThreadQueryResult>({ const query = useQuery<UsePostThreadQueryResult>({
@@ -79,7 +76,6 @@ export function usePostThread({anchor}: {anchor?: string}) {
branchingFactor: view === 'linear' ? LINEAR_VIEW_BF : TREE_VIEW_BF, branchingFactor: view === 'linear' ? LINEAR_VIEW_BF : TREE_VIEW_BF,
below, below,
sort: sort, sort: sort,
prioritizeFollowedUsers: prioritizeFollowedUsers,
}) })
/* /*
@@ -167,7 +163,6 @@ export function usePostThread({anchor}: {anchor?: string}) {
async queryFn() { async queryFn() {
const {data} = await agent.app.bsky.unspecced.getPostThreadOtherV2({ const {data} = await agent.app.bsky.unspecced.getPostThreadOtherV2({
anchor: anchor!, anchor: anchor!,
prioritizeFollowedUsers,
}) })
return data return data
}, },
+1 -1
View File
@@ -25,7 +25,7 @@ export const createPostThreadOtherQueryKey = (
export type PostThreadParams = Pick< export type PostThreadParams = Pick<
AppBskyUnspeccedGetPostThreadV2.QueryParams, AppBskyUnspeccedGetPostThreadV2.QueryParams,
'sort' | 'prioritizeFollowedUsers' 'sort'
> & { > & {
anchor?: string anchor?: string
view: 'tree' | 'linear' view: 'tree' | 'linear'
+4 -4
View File
@@ -84,10 +84,10 @@
tlds "^1.234.0" tlds "^1.234.0"
zod "^3.23.8" zod "^3.23.8"
"@atproto/api@^0.17.6": "@atproto/api@^0.18.0":
version "0.17.6" version "0.18.0"
resolved "https://registry.yarnpkg.com/@atproto/api/-/api-0.17.6.tgz#1fccd939f5f1010397c4d57110b1a0d8673058a6" resolved "https://registry.yarnpkg.com/@atproto/api/-/api-0.18.0.tgz#d8c54ddc4521d915f0af238a4bfebd119e18197f"
integrity sha512-0iYCD8+LOsHjHjwJcqGPfJN/h4b+IpU3GjOV0TSLk0XdCaxpHBKNu3wgCJVst4DhVjXcgsr2qQoRZ3Jja2LupA== integrity sha512-2GxKPhhvMocDjRU7VpNj+cvCdmCHVAmRwyfNgRLMrJtPZvrosFoi9VATX+7eKN0FZvYvy8KdLSkCcpP2owH3IA==
dependencies: dependencies:
"@atproto/common-web" "^0.4.3" "@atproto/common-web" "^0.4.3"
"@atproto/lexicon" "^0.5.1" "@atproto/lexicon" "^0.5.1"