From ed2c8b720edb0886f72e97539fc5b08d943dda42 Mon Sep 17 00:00:00 2001 From: Paul Frazee Date: Fri, 12 Apr 2024 07:53:11 -0700 Subject: [PATCH] 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 --- src/lib/api/feed-manip.ts | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/lib/api/feed-manip.ts b/src/lib/api/feed-manip.ts index 22706259..85089608 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 } } }