Bluesky app fork with some witchin' additions 馃挮
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

at main 52 lines 1.7 kB view raw
1import {useMemo} from 'react' 2 3import {FeedTuner} from '#/lib/api/feed-manip' 4import {type FeedDescriptor} from '../queries/post-feed' 5import {usePreferencesQuery} from '../queries/preferences' 6import {useSession} from '../session' 7import {useLanguagePrefs} from './languages' 8 9export function useFeedTuners(feedDesc: FeedDescriptor) { 10 const langPrefs = useLanguagePrefs() 11 const {data: preferences} = usePreferencesQuery() 12 const {currentAccount} = useSession() 13 14 return useMemo(() => { 15 if (feedDesc.startsWith('author')) { 16 if (feedDesc.endsWith('|posts_with_replies')) { 17 // TODO: Do this on the server instead. 18 return [FeedTuner.removeReposts] 19 } 20 } 21 if (feedDesc.startsWith('feedgen')) { 22 return [ 23 FeedTuner.preferredLangOnly(langPrefs.contentLanguages), 24 FeedTuner.removeMutedThreads, 25 ] 26 } 27 if (feedDesc === 'following' || feedDesc.startsWith('list')) { 28 const feedTuners = [FeedTuner.removeOrphans] 29 30 if (preferences?.feedViewPrefs.hideReposts) { 31 feedTuners.push(FeedTuner.removeReposts) 32 } 33 if (preferences?.feedViewPrefs.hideReplies) { 34 feedTuners.push(FeedTuner.removeReplies) 35 } else { 36 feedTuners.push( 37 FeedTuner.followedRepliesOnly({ 38 userDid: currentAccount?.did || '', 39 }), 40 ) 41 } 42 if (preferences?.feedViewPrefs.hideQuotePosts) { 43 feedTuners.push(FeedTuner.removeQuotePosts) 44 } 45 feedTuners.push(FeedTuner.dedupThreads) 46 feedTuners.push(FeedTuner.removeMutedThreads) 47 48 return feedTuners 49 } 50 return [] 51 }, [feedDesc, currentAccount, preferences, langPrefs]) 52}