mirror of https://git.lenooby09.tech/LeNooby09/social-app.git
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}