A tool for tailing a labelers' firehose, rehydrating, and storing records for future analysis of moderation decisions.
3
fork

Configure Feed

Select the types of activity you want to include in your feed.

fix: convert CID objects to strings using toString()

The @atproto/api library deserializes blob refs into CID objects, not plain objects with $link. Call toString() to get the CID string.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

+4 -14
+4 -14
src/hydration/profiles.service.ts
··· 83 83 84 84 if (profileResponse.success && profileResponse.data.value) { 85 85 const record = profileResponse.data.value as any; 86 - logger.debug({ did, record }, "Profile record structure"); 87 - 88 - if (record.avatar) { 89 - logger.debug({ did, avatarRef: record.avatar.ref, avatarRefKeys: Object.keys(record.avatar.ref || {}) }, "Avatar ref inspection"); 90 - } 91 - 92 86 displayName = record.displayName; 93 87 description = record.description; 94 88 95 - if (record.avatar?.ref?.$link) { 96 - avatarCid = record.avatar.ref.$link; 97 - } else if (record.avatar?.ref) { 98 - avatarCid = record.avatar.ref; 89 + if (record.avatar?.ref) { 90 + avatarCid = record.avatar.ref.toString(); 99 91 } else { 100 92 avatarCid = ""; 101 93 } 102 94 103 - if (record.banner?.ref?.$link) { 104 - bannerCid = record.banner.ref.$link; 105 - } else if (record.banner?.ref) { 106 - bannerCid = record.banner.ref; 95 + if (record.banner?.ref) { 96 + bannerCid = record.banner.ref.toString(); 107 97 } else { 108 98 bannerCid = ""; 109 99 }