Bluesky app fork with some witchin' additions 💫 witchsky.app
bluesky fork client

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

* Deprecate prioritizeFollowedUsers

* Bump API package

authored by

Eric Bailey and committed by
GitHub
7bf00424 ec2c580a

+10 -79
+1 -1
package.json
··· 72 72 "icons:optimize": "svgo -f ./assets/icons" 73 73 }, 74 74 "dependencies": { 75 - "@atproto/api": "^0.17.6", 75 + "@atproto/api": "^0.18.0", 76 76 "@bitdrift/react-native": "^0.6.8", 77 77 "@braintree/sanitize-url": "^6.0.2", 78 78 "@bsky.app/alf": "^0.1.5",
+1 -30
src/screens/Settings/ThreadPreferences.tsx
··· 14 14 import {atoms as a, useTheme} from '#/alf' 15 15 import * as Toggle from '#/components/forms/Toggle' 16 16 import {Bubbles_Stroke2_Corner2_Rounded as BubblesIcon} from '#/components/icons/Bubble' 17 - import {PersonGroup_Stroke2_Corner2_Rounded as PersonGroupIcon} from '#/components/icons/Person' 18 17 import {Tree_Stroke2_Corner0_Rounded as TreeIcon} from '#/components/icons/Tree' 19 18 import * as Layout from '#/components/Layout' 20 19 import {Text} from '#/components/Typography' ··· 24 23 export function ThreadPreferencesScreen({}: Props) { 25 24 const t = useTheme() 26 25 const {_} = useLingui() 27 - const { 28 - sort, 29 - setSort, 30 - view, 31 - setView, 32 - prioritizeFollowedUsers, 33 - setPrioritizeFollowedUsers, 34 - } = useThreadPreferences({save: true}) 26 + const {sort, setSort, view, setView} = useThreadPreferences({save: true}) 35 27 36 28 return ( 37 29 <Layout.Screen testID="threadPreferencesScreen"> ··· 86 78 </View> 87 79 </Toggle.Group> 88 80 </View> 89 - </SettingsList.Group> 90 - 91 - <SettingsList.Group contentContainerStyle={{minHeight: 0}}> 92 - <SettingsList.ItemIcon icon={PersonGroupIcon} /> 93 - <SettingsList.ItemText> 94 - <Trans>Prioritize your Follows</Trans> 95 - </SettingsList.ItemText> 96 - <Toggle.Item 97 - type="checkbox" 98 - name="prioritize-follows" 99 - label={_(msg`Prioritize your Follows`)} 100 - value={prioritizeFollowedUsers} 101 - onChange={value => setPrioritizeFollowedUsers(value)} 102 - style={[a.w_full, a.gap_md]}> 103 - <Toggle.LabelText style={[a.flex_1]}> 104 - <Trans> 105 - Show replies by people you follow before all other replies 106 - </Trans> 107 - </Toggle.LabelText> 108 - <Toggle.Platform /> 109 - </Toggle.Item> 110 81 </SettingsList.Group> 111 82 112 83 <SettingsList.Group>
-1
src/state/queries/preferences/const.ts
··· 16 16 17 17 export const DEFAULT_THREAD_VIEW_PREFS: ThreadViewPreferences = { 18 18 sort: 'hotness', 19 - prioritizeFollowedUsers: true, 20 19 lab_treeViewEnabled: false, 21 20 } 22 21
+2 -9
src/state/queries/preferences/types.ts
··· 1 - import { 2 - type BskyFeedViewPreference, 3 - type BskyPreferences, 4 - type BskyThreadViewPreference, 5 - } from '@atproto/api' 1 + import {type BskyFeedViewPreference, type BskyPreferences} from '@atproto/api' 6 2 7 3 export type UsePreferencesQueryResponse = Omit< 8 4 BskyPreferences, ··· 18 14 userAge: number | undefined 19 15 } 20 16 21 - export type ThreadViewPreferences = Pick< 22 - BskyThreadViewPreference, 23 - 'prioritizeFollowedUsers' 24 - > & { 17 + export type ThreadViewPreferences = { 25 18 sort: 'hotness' | 'oldest' | 'newest' | 'most-likes' | 'random' | string 26 19 lab_treeViewEnabled?: boolean 27 20 }
+1 -28
src/state/queries/preferences/useThreadPreferences.ts
··· 23 23 setSort: (sort: string) => void 24 24 view: ThreadViewOption 25 25 setView: (view: ThreadViewOption) => void 26 - prioritizeFollowedUsers: boolean 27 - setPrioritizeFollowedUsers: (prioritize: boolean) => void 28 26 } 29 27 30 28 export function useThreadPreferences({ ··· 43 41 treeViewEnabled: !!serverPrefs?.lab_treeViewEnabled, 44 42 }), 45 43 ) 46 - const [prioritizeFollowedUsers, setPrioritizeFollowedUsers] = useState( 47 - !!serverPrefs?.prioritizeFollowedUsers, 48 - ) 49 44 50 45 /** 51 46 * If we get a server update, update local state ··· 59 54 * Update 60 55 */ 61 56 setSort(normalizeSort(serverPrefs.sort)) 62 - setPrioritizeFollowedUsers(serverPrefs.prioritizeFollowedUsers) 63 57 setView( 64 58 normalizeView({ 65 59 treeViewEnabled: !!serverPrefs.lab_treeViewEnabled, ··· 70 64 logger.metric('thread:preferences:load', { 71 65 sort: serverPrefs.sort, 72 66 view: serverPrefs.lab_treeViewEnabled ? 'tree' : 'linear', 73 - prioritizeFollowedUsers: serverPrefs.prioritizeFollowedUsers, 74 67 }) 75 68 }) 76 69 } ··· 86 79 logger.metric('thread:preferences:update', { 87 80 sort: prefs.sort, 88 81 view: prefs.lab_treeViewEnabled ? 'tree' : 'linear', 89 - prioritizeFollowedUsers: prefs.prioritizeFollowedUsers, 90 82 }) 91 83 } catch (e) { 92 84 logger.error('useThreadPreferences failed to save', { ··· 101 93 if (save && userUpdatedPrefs.current) { 102 94 savePrefs({ 103 95 sort, 104 - prioritizeFollowedUsers, 105 96 lab_treeViewEnabled: view === 'tree', 106 97 }) 107 98 userUpdatedPrefs.current = false ··· 121 112 }, 122 113 [setView], 123 114 ) 124 - const setPrioritizeFollowedUsersWrapped = useCallback( 125 - (next: boolean) => { 126 - userUpdatedPrefs.current = true 127 - setPrioritizeFollowedUsers(next) 128 - }, 129 - [setPrioritizeFollowedUsers], 130 - ) 131 115 132 116 return useMemo( 133 117 () => ({ ··· 137 121 setSort: setSortWrapped, 138 122 view, 139 123 setView: setViewWrapped, 140 - prioritizeFollowedUsers, 141 - setPrioritizeFollowedUsers: setPrioritizeFollowedUsersWrapped, 142 124 }), 143 - [ 144 - isLoaded, 145 - isSaving, 146 - sort, 147 - setSortWrapped, 148 - view, 149 - setViewWrapped, 150 - prioritizeFollowedUsers, 151 - setPrioritizeFollowedUsersWrapped, 152 - ], 125 + [isLoaded, isSaving, sort, setSortWrapped, view, setViewWrapped], 153 126 ) 154 127 } 155 128
-5
src/state/queries/usePostThread/index.ts
··· 49 49 setSort: baseSetSort, 50 50 view, 51 51 setView: baseSetView, 52 - prioritizeFollowedUsers, 53 52 } = useThreadPreferences() 54 53 const below = useMemo(() => { 55 54 return view === 'linear' ··· 63 62 anchor, 64 63 sort, 65 64 view, 66 - prioritizeFollowedUsers, 67 65 }) 68 66 const postThreadOtherQueryKey = createPostThreadOtherQueryKey({ 69 67 anchor, 70 - prioritizeFollowedUsers, 71 68 }) 72 69 73 70 const query = useQuery<UsePostThreadQueryResult>({ ··· 79 76 branchingFactor: view === 'linear' ? LINEAR_VIEW_BF : TREE_VIEW_BF, 80 77 below, 81 78 sort: sort, 82 - prioritizeFollowedUsers: prioritizeFollowedUsers, 83 79 }) 84 80 85 81 /* ··· 167 163 async queryFn() { 168 164 const {data} = await agent.app.bsky.unspecced.getPostThreadOtherV2({ 169 165 anchor: anchor!, 170 - prioritizeFollowedUsers, 171 166 }) 172 167 return data 173 168 },
+1 -1
src/state/queries/usePostThread/types.ts
··· 25 25 26 26 export type PostThreadParams = Pick< 27 27 AppBskyUnspeccedGetPostThreadV2.QueryParams, 28 - 'sort' | 'prioritizeFollowedUsers' 28 + 'sort' 29 29 > & { 30 30 anchor?: string 31 31 view: 'tree' | 'linear'
+4 -4
yarn.lock
··· 84 84 tlds "^1.234.0" 85 85 zod "^3.23.8" 86 86 87 - "@atproto/api@^0.17.6": 88 - version "0.17.6" 89 - resolved "https://registry.yarnpkg.com/@atproto/api/-/api-0.17.6.tgz#1fccd939f5f1010397c4d57110b1a0d8673058a6" 90 - integrity sha512-0iYCD8+LOsHjHjwJcqGPfJN/h4b+IpU3GjOV0TSLk0XdCaxpHBKNu3wgCJVst4DhVjXcgsr2qQoRZ3Jja2LupA== 87 + "@atproto/api@^0.18.0": 88 + version "0.18.0" 89 + resolved "https://registry.yarnpkg.com/@atproto/api/-/api-0.18.0.tgz#d8c54ddc4521d915f0af238a4bfebd119e18197f" 90 + integrity sha512-2GxKPhhvMocDjRU7VpNj+cvCdmCHVAmRwyfNgRLMrJtPZvrosFoi9VATX+7eKN0FZvYvy8KdLSkCcpP2owH3IA== 91 91 dependencies: 92 92 "@atproto/common-web" "^0.4.3" 93 93 "@atproto/lexicon" "^0.5.1"