about summary refs log tree commit diff
path: root/src/state/preferences/feed-tuners.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'src/state/preferences/feed-tuners.tsx')
-rw-r--r--src/state/preferences/feed-tuners.tsx48
1 files changed, 48 insertions, 0 deletions
diff --git a/src/state/preferences/feed-tuners.tsx b/src/state/preferences/feed-tuners.tsx
new file mode 100644
index 000000000..96770055c
--- /dev/null
+++ b/src/state/preferences/feed-tuners.tsx
@@ -0,0 +1,48 @@
+import {useMemo} from 'react'
+import {FeedTuner} from '#/lib/api/feed-manip'
+import {FeedDescriptor} from '../queries/post-feed'
+import {useLanguagePrefs} from './languages'
+
+export function useFeedTuners(feedDesc: FeedDescriptor) {
+  const langPrefs = useLanguagePrefs()
+
+  return useMemo(() => {
+    if (feedDesc.startsWith('feedgen')) {
+      return [
+        FeedTuner.dedupReposts,
+        FeedTuner.preferredLangOnly(langPrefs.contentLanguages),
+      ]
+    }
+    if (feedDesc.startsWith('list')) {
+      return [FeedTuner.dedupReposts]
+    }
+    if (feedDesc === 'home' || feedDesc === 'following') {
+      const feedTuners = []
+
+      if (false /*TODOthis.homeFeed.hideReposts*/) {
+        feedTuners.push(FeedTuner.removeReposts)
+      } else {
+        feedTuners.push(FeedTuner.dedupReposts)
+      }
+
+      if (true /*TODOthis.homeFeed.hideReplies*/) {
+        feedTuners.push(FeedTuner.removeReplies)
+      } /* TODO else {
+        feedTuners.push(
+          FeedTuner.thresholdRepliesOnly({
+            userDid: this.rootStore.session.data?.did || '',
+            minLikes: this.homeFeed.hideRepliesByLikeCount,
+            followedOnly: !!this.homeFeed.hideRepliesByUnfollowed,
+          }),
+        )
+      }*/
+
+      if (false /*TODOthis.homeFeed.hideQuotePosts*/) {
+        feedTuners.push(FeedTuner.removeQuotePosts)
+      }
+
+      return feedTuners
+    }
+    return []
+  }, [feedDesc, langPrefs])
+}