mirror of https://git.lenooby09.tech/LeNooby09/social-app.git
0
fork

Configure Feed

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

at tooltip 48 lines 1.6 kB view raw
1import {useMemo} from 'react' 2 3import {FeedTuner} from '#/lib/api/feed-manip' 4import {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 [FeedTuner.preferredLangOnly(langPrefs.contentLanguages)] 23 } 24 if (feedDesc === 'following' || feedDesc.startsWith('list')) { 25 const feedTuners = [FeedTuner.removeOrphans] 26 27 if (preferences?.feedViewPrefs.hideReposts) { 28 feedTuners.push(FeedTuner.removeReposts) 29 } 30 if (preferences?.feedViewPrefs.hideReplies) { 31 feedTuners.push(FeedTuner.removeReplies) 32 } else { 33 feedTuners.push( 34 FeedTuner.followedRepliesOnly({ 35 userDid: currentAccount?.did || '', 36 }), 37 ) 38 } 39 if (preferences?.feedViewPrefs.hideQuotePosts) { 40 feedTuners.push(FeedTuner.removeQuotePosts) 41 } 42 feedTuners.push(FeedTuner.dedupThreads) 43 44 return feedTuners 45 } 46 return [] 47 }, [feedDesc, currentAccount, preferences, langPrefs]) 48}