Fix retweet/reply author mismatch: name and handle now describe the same person
authorName came from fxtwitter's enrichment (keyed by the tweet ID, which for a retweet/reply resolves to the original tweet) while authorHandle was hardcoded to the RSS feed's dc:creator — which is actually whichever list member's retweet or reply surfaced the item, not the original author. The card ended up showing one person's display name next to another person's @handle. Both fields now come from the same enrichment response, falling back together to the RSS-derived handle only when enrichment fails. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014c1L8ghNBFjfiH64UMViP8
This commit is contained in:
@@ -116,16 +116,21 @@ export const nitterAdapter: SourceAdapter = {
|
||||
continue;
|
||||
}
|
||||
|
||||
// dc:creator is reliably the author of this item's own tweet text (rss-parser
|
||||
// maps it to item.creator) — for a retweet, that's the original tweet's author,
|
||||
// not whichever list member's retweet surfaced it in this feed.
|
||||
const handle = (item.creator ?? '').replace(/^@/, '') || 'unknown';
|
||||
// dc:creator (rss-parser maps it to item.creator) is actually whichever list
|
||||
// member's retweet/reply surfaced this item in the feed — NOT the original
|
||||
// tweet's author for a retweet. It's only used here to look up the fxtwitter
|
||||
// enrichment (fxtwitter needs *a* handle + the tweet ID, and any handle works
|
||||
// for that lookup); the author identity actually displayed always comes from
|
||||
// the enrichment response below, keyed consistently off the same tweet — so
|
||||
// name and handle never end up describing two different people.
|
||||
const rssHandle = (item.creator ?? '').replace(/^@/, '') || 'unknown';
|
||||
const ownHtml = ownContentHtml(item.content ?? '');
|
||||
const rssImageUrl = extractImageUrl(ownHtml);
|
||||
|
||||
const enrichment = await fetchFxTwitter(handle, tweetId);
|
||||
const enrichment = await fetchFxTwitter(rssHandle, tweetId);
|
||||
|
||||
const authorName = enrichment?.author?.name ?? handle;
|
||||
const authorName = enrichment?.author?.name ?? rssHandle;
|
||||
const handle = enrichment?.author?.screen_name ?? rssHandle;
|
||||
const avatarUrl = enrichment?.author?.avatar_url ?? null;
|
||||
const text = enrichment?.text ?? ownHtml;
|
||||
// Enrichment failed (or came back with no media) — fall back to the RSS
|
||||
|
||||
Reference in New Issue
Block a user