diff --git a/src/api/bluesky_api.ts b/src/api/bluesky_api.ts index 8d4fcdb..33e4149 100644 --- a/src/api/bluesky_api.ts +++ b/src/api/bluesky_api.ts @@ -4,6 +4,7 @@ import { APIError, Minisky, type FetchAllOnPageLoad, type MiniskyConfig, type Mi import { atURI, feedPostTime } from '../utils.js'; import { Post } from '../models/posts.js'; import { parseBlueskyPostURL } from '../router.js'; +import { pdsEndpointForDID } from './identity.js'; export { APIError }; @@ -156,7 +157,14 @@ export class BlueskyAPI extends Minisky { } async loadMiniDocWithStatus(did: string): Promise { - let doc = await slingshotAPI.getRequest("blue.microcosm.identity.resolveMiniDoc", { identifier: did }); + let doc: json; + + try { + doc = await slingshotAPI.getRequest("blue.microcosm.identity.resolveMiniDoc", { identifier: did }); + } catch (error) { + let pds = await pdsEndpointForDID(did); + doc = { did, pds }; + } try { let pds = new Minisky(doc.pds); diff --git a/src/components/posts/HiddenRepliesLink.svelte b/src/components/posts/HiddenRepliesLink.svelte index 7abbd23..465d220 100644 --- a/src/components/posts/HiddenRepliesLink.svelte +++ b/src/components/posts/HiddenRepliesLink.svelte @@ -52,7 +52,11 @@ } let unavailableURIs = missingReplyURIs.filter(x => !replies.find(r => r.uri == x)); - let unavailablePromises = unavailableURIs.map(uri => api.loadMiniDocWithStatus(atURI(uri).repo)); + let unavailablePromises = unavailableURIs.map(uri => { + let did = atURI(uri).repo; + return api.loadMiniDocWithStatus(did).catch(() => ({ did })); + }); + let unavailableResponses = await Promise.all(unavailablePromises); loading = false; diff --git a/src/components/posts/PostComponent.svelte b/src/components/posts/PostComponent.svelte index cb051ba..e95ebd7 100644 --- a/src/components/posts/PostComponent.svelte +++ b/src/components/posts/PostComponent.svelte @@ -191,7 +191,8 @@