about summary refs log tree commit diff
path: root/src/lib/api
diff options
context:
space:
mode:
authorPaul Frazee <pfrazee@gmail.com>2024-04-12 07:53:11 -0700
committerGitHub <noreply@github.com>2024-04-12 15:53:11 +0100
commited2c8b720edb0886f72e97539fc5b08d943dda42 (patch)
tree1878a3884cce3b1c026db1ef2de1dfbd87a64f56 /src/lib/api
parentad97d4350c55055c3fcf084915a0a067c09939da (diff)
downloadvoidsky-ed2c8b720edb0886f72e97539fc5b08d943dda42.tar.zst
Dont apply the content-language filter if it will remove all content (#3492)
* Dont apply the content-language filter if it will remove all content

* Improve code
Diffstat (limited to 'src/lib/api')
-rw-r--r--src/lib/api/feed-manip.ts20
1 files changed, 15 insertions, 5 deletions
diff --git a/src/lib/api/feed-manip.ts b/src/lib/api/feed-manip.ts
index 227062592..85089608a 100644
--- a/src/lib/api/feed-manip.ts
+++ b/src/lib/api/feed-manip.ts
@@ -1,11 +1,12 @@
 import {
+  AppBskyEmbedRecord,
+  AppBskyEmbedRecordWithMedia,
   AppBskyFeedDefs,
   AppBskyFeedPost,
-  AppBskyEmbedRecordWithMedia,
-  AppBskyEmbedRecord,
 } from '@atproto/api'
-import {ReasonFeedSource} from './feed/types'
+
 import {isPostInLanguage} from '../../locale/helpers'
+import {ReasonFeedSource} from './feed/types'
 type FeedViewPost = AppBskyFeedDefs.FeedViewPost
 
 export type FeedTunerFn = (
@@ -341,6 +342,8 @@ export class FeedTuner {
       tuner: FeedTuner,
       slices: FeedViewPostsSlice[],
     ): FeedViewPostsSlice[] => {
+      const candidateSlices = slices.slice()
+
       // early return if no languages have been specified
       if (!preferredLangsCode2.length || preferredLangsCode2.length === 0) {
         return slices
@@ -357,10 +360,17 @@ export class FeedTuner {
 
         // if item does not fit preferred language, remove it
         if (!hasPreferredLang) {
-          slices.splice(i, 1)
+          candidateSlices.splice(i, 1)
         }
       }
-      return slices
+
+      // if the language filter cleared out the entire page, return the original set
+      // so that something always shows
+      if (candidateSlices.length === 0) {
+        return slices
+      }
+
+      return candidateSlices
     }
   }
 }