Clean up getPostThreadV2 settings/params in prep for future work (#9179)
* Deprecate prioritizeFollowedUsers * Bump API package
This commit is contained in:
+1
-1
@@ -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",
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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,
|
|
||||||
],
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -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'
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
Reference in New Issue
Block a user