about summary refs log tree commit diff
path: root/src/lib/api/feed
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/api/feed')
-rw-r--r--src/lib/api/feed/custom.ts24
1 files changed, 20 insertions, 4 deletions
diff --git a/src/lib/api/feed/custom.ts b/src/lib/api/feed/custom.ts
index f3ac45b6e..c5e0a35f5 100644
--- a/src/lib/api/feed/custom.ts
+++ b/src/lib/api/feed/custom.ts
@@ -5,7 +5,10 @@ import {
   jsonStringToLex,
 } from '@atproto/api'
 
-import {getContentLanguages} from '#/state/preferences/languages'
+import {
+  getAppLanguageAsContentLanguage,
+  getContentLanguages,
+} from '#/state/preferences/languages'
 import {FeedAPI, FeedAPIResponse} from './types'
 import {createBskyTopicsHeader, isBlueskyOwnedFeed} from './utils'
 
@@ -103,14 +106,27 @@ async function loggedOutFetch({
   limit: number
   cursor?: string
 }) {
-  let contentLangs = getContentLanguages().join(',')
+  let contentLangs = getAppLanguageAsContentLanguage()
+
+  /**
+   * Copied from our root `Agent` class
+   * @see https://github.com/bluesky-social/atproto/blob/60df3fc652b00cdff71dd9235d98a7a4bb828f05/packages/api/src/agent.ts#L120
+   */
+  const labelersHeader = {
+    'atproto-accept-labelers': BskyAgent.appLabelers
+      .map(l => `${l};redact`)
+      .join(', '),
+  }
 
   // manually construct fetch call so we can add the `lang` cache-busting param
   let res = await fetch(
     `https://api.bsky.app/xrpc/app.bsky.feed.getFeed?feed=${feed}${
       cursor ? `&cursor=${cursor}` : ''
     }&limit=${limit}&lang=${contentLangs}`,
-    {method: 'GET', headers: {'Accept-Language': contentLangs}},
+    {
+      method: 'GET',
+      headers: {'Accept-Language': contentLangs, ...labelersHeader},
+    },
   )
   let data = res.ok ? jsonStringToLex(await res.text()) : null
   if (data?.feed?.length) {
@@ -125,7 +141,7 @@ async function loggedOutFetch({
     `https://api.bsky.app/xrpc/app.bsky.feed.getFeed?feed=${feed}${
       cursor ? `&cursor=${cursor}` : ''
     }&limit=${limit}`,
-    {method: 'GET', headers: {'Accept-Language': ''}},
+    {method: 'GET', headers: {'Accept-Language': '', ...labelersHeader}},
   )
   data = res.ok ? jsonStringToLex(await res.text()) : null
   if (data?.feed?.length) {