diff --git a/src/api/bluefeeds_api.ts b/src/api/bluefeeds_api.ts index eb3e632..63f03bf 100644 --- a/src/api/bluefeeds_api.ts +++ b/src/api/bluefeeds_api.ts @@ -36,4 +36,9 @@ export class BluefeedsAPI extends Minisky { return await this.getRequest('blue.feeds.post.getQuotes', params); } + + async getReplies(uri: string): Promise { + let json = await this.getRequest('blue.feeds.post.getReplies', { uri }); + return json.replies; + } } diff --git a/src/api/bluesky_api.ts b/src/api/bluesky_api.ts index 3ee9516..9a0fccd 100644 --- a/src/api/bluesky_api.ts +++ b/src/api/bluesky_api.ts @@ -1,5 +1,5 @@ import { HandleCache } from './handle_cache.js'; -import { appView, constellationAPI, slingshotAPI } from '../api.js'; +import { appView, blueAPI, constellationAPI, slingshotAPI } from '../api.js'; import { APIError, Minisky, type FetchAllOnPageLoad, type MiniskyConfig, type MiniskyOptions, type MiniskyRequestOptions } from './minisky.js'; import { atURI, feedPostTime } from '../utils.js'; import { Post } from '../models/posts.js'; @@ -127,8 +127,14 @@ export class BlueskyAPI extends Minisky { } async loadHiddenReplyURIs(post: Post): Promise { - let expectedReplyURIs = await constellationAPI.getReplies(post.uri); - let missingReplyURIs = expectedReplyURIs.filter(r => !post.replies.find(x => x.uri === r)); + let [constellationReplies, blueReplies] = await Promise.all([ + constellationAPI.getReplies(post.uri), + blueAPI.getReplies(post.uri).catch(() => []) + ]); + + let expectedReplyURIs = Array.from(new Set(constellationReplies.concat(blueReplies))); + let existingReplies = new Set(post.replies.map(x => x.uri)); + let missingReplyURIs = expectedReplyURIs.filter(r => !existingReplies.has(r)); missingReplyURIs.sort((a, b) => { let arkey = a.split('/').at(-1)!