From 9b86cb5c36da993c99dfa36760667bded4c71b15 Mon Sep 17 00:00:00 2001 From: Paul Frazee Date: Tue, 25 Apr 2023 20:47:37 -0500 Subject: Fix: dont request more than 25 posts at a time (close [APP-561]) (#534) --- src/state/models/feeds/notifications.ts | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/state/models/feeds/notifications.ts b/src/state/models/feeds/notifications.ts index 0bbbe215c..220e04bce 100644 --- a/src/state/models/feeds/notifications.ts +++ b/src/state/models/feeds/notifications.ts @@ -10,6 +10,7 @@ import { ComAtprotoLabelDefs, } from '@atproto/api' import AwaitLock from 'await-lock' +import chunk from 'lodash.chunk' import {bundleAsync} from 'lib/async/bundle' import {RootStoreModel} from '../root-store' import {PostThreadModel} from '../content/post-thread' @@ -554,10 +555,15 @@ export class NotificationsFeedModel { // fetch additional data if (addedPostMap.size > 0) { - const postsRes = await this.rootStore.agent.app.bsky.feed.getPosts({ - uris: Array.from(addedPostMap.keys()), - }) - for (const post of postsRes.data.posts) { + const uriChunks = chunk(Array.from(addedPostMap.keys()), 25) + const postsChunks = await Promise.all( + uriChunks.map(uris => + this.rootStore.agent.app.bsky.feed + .getPosts({uris}) + .then(res => res.data.posts), + ), + ) + for (const post of postsChunks.flat()) { const models = addedPostMap.get(post.uri) if (models?.length) { for (const model of models) { -- cgit 1.4.1