+24
-2
lib/components/BlueskyPost.tsx
+24
-2
lib/components/BlueskyPost.tsx
···············
···············
+25
-2
lib/components/BlueskyProfile.tsx
+25
-2
lib/components/BlueskyProfile.tsx
·········
·········
+34
lib/hooks/useAtProtoRecord.ts
+34
lib/hooks/useAtProtoRecord.ts
···············
······+* For other collections, queries the PDS directly (with Slingshot fallback via the client handler).·········
+617
lib/hooks/useBlueskyAppview.ts
+617
lib/hooks/useBlueskyAppview.ts
···
···+/** CDN URL from Bluesky appview (e.g., https://cdn.bsky.app/img/avatar/plain/did:plc:xxx/bafkreixxx@jpeg) */+* @returns {UseBlueskyAppviewResult<T>} Object containing the record, loading state, error, and source.+const res = await (rpc as unknown as { get: (nsid: string, opts: { params: Record<string, unknown> }) => Promise<{ ok: boolean; data: AppviewProfileResponse }> }).get(endpoint, {+const res = await (rpc as unknown as { get: (nsid: string, opts: { params: Record<string, unknown> }) => Promise<{ ok: boolean; data: AppviewPostThreadResponse<T> }> }).get(endpoint, {+const recordEmbed = record.embed as { $type?: string; images?: Array<Record<string, unknown>>; media?: Record<string, unknown> };+const mediaEmbedImages = (recordEmbed.media as { images?: Array<Record<string, unknown>> } | undefined)?.images;+(recordEmbed.media as { images: Array<Record<string, unknown>> }).images = mediaEmbedImages.map((img: Record<string, unknown>, idx: number) => {+get: (nsid: string, opts: { params: Record<string, unknown> }) => Promise<{ ok: boolean; data: TResponse }>;+get: (nsid: string, opts: { params: Record<string, unknown> }) => Promise<{ ok: boolean; data: { value: T } }>;
+48
-37
lib/hooks/useBlueskyProfile.ts
+48
-37
lib/hooks/useBlueskyProfile.ts
······* @returns {{ data: BlueskyProfileData | undefined; loading: boolean; error: Error | undefined }} Object exposing the profile payload, loading flag, and any error.
······+* When using the appview, avatar/banner CDN URLs (e.g., https://cdn.bsky.app/img/avatar/plain/did:plc:xxx/bafkreixxx@jpeg)+* are automatically parsed to extract CIDs and convert them to standard Blob format for compatibility.* @returns {{ data: BlueskyProfileData | undefined; loading: boolean; error: Error | undefined }} Object exposing the profile payload, loading flag, and any error.
+58
-33
lib/hooks/useLatestRecord.ts
+58
-33
lib/hooks/useLatestRecord.ts
···············
······+* Note: Slingshot does not support listRecords, so this always queries the actor's PDS directly.·········
+79
-83
lib/hooks/usePaginatedRecords.ts
+79
-83
lib/hooks/usePaginatedRecords.ts
··················
··················
+1
lib/index.ts
+1
lib/index.ts
+43
-2
lib/renderers/BlueskyPostRenderer.tsx
+43
-2
lib/renderers/BlueskyPostRenderer.tsx
·········
·········