···
replyParent={record.replyParent}
hasDivider={idx < records.length - 1}
···
reason?: AuthorFeedReason;
replyParent?: ReplyParentInfo;
···
···
const absolute = record.createdAt
? new Date(record.createdAt).toLocaleString()
-
const href = `${blueskyAppBaseUrl}/profile/${did}/post/${rkey}`;
reason?.$type === "app.bsky.feed.defs#reasonRepost"
-
? `${formatActor(reason.by) ?? "Someone"} reposted`
const parentUri = replyParent?.uri ?? record.reply?.parent?.uri;
···
const { handle: resolvedReplyHandle } = useDidResolution(
replyParent?.author?.handle ? undefined : parentDid,
-
const replyLabel = formatReplyTarget(
const postPreview = text.slice(0, 100);
? `Post by ${did}: ${postPreview}${text.length > 100 ? '...' : ''}`
-
rel="noopener noreferrer"
-
color: `var(--atproto-color-text)`,
? `1px solid var(--atproto-color-border)`
-
<span style={{ ...listStyles.rowMeta, color: `var(--atproto-color-text-secondary)` }}>
-
<span style={{ ...listStyles.rowMeta, color: `var(--atproto-color-text-secondary)` }}>
style={{ ...listStyles.rowTime, color: `var(--atproto-color-text-secondary)` }}
···
-
<p style={{ ...listStyles.rowBody, color: `var(--atproto-color-text)` }}>
-
color: `var(--atproto-color-text)`,
···
} satisfies React.CSSProperties,
-
textDecoration: "none",
transition: "background-color 120ms ease",
} satisfies React.CSSProperties,
···
const directHandle = feedParent?.author?.handle;
const handle = directHandle ?? resolvedHandle;
-
return `Replying to @${handle}`;
const parentDid = feedParent?.author?.did;
const targetUri = feedParent?.uri ?? parentUri;
···
const parsed = parseAtUri(targetUri);
const did = parentDid ?? parsed?.did;
if (!did) return undefined;
-
return `Replying to @${formatDid(did)}`;
···
replyParent={record.replyParent}
hasDivider={idx < records.length - 1}
···
reason?: AuthorFeedReason;
replyParent?: ReplyParentInfo;
···
···
const absolute = record.createdAt
? new Date(record.createdAt).toLocaleString()
+
// Parse the URI to get the actual post's DID and rkey
+
// This handles reposts correctly by linking to the original post
+
const parsedUri = uri ? parseAtUri(uri) : undefined;
+
const postDid = parsedUri?.did ?? did;
+
const postRkey = parsedUri?.rkey ?? rkey;
+
const href = `${blueskyAppBaseUrl}/profile/${postDid}/post/${postRkey}`;
+
// Resolve the original post author's handle for reposts
+
const { handle: originalAuthorHandle } = useDidResolution(
+
reason?.$type === "app.bsky.feed.defs#reasonRepost" ? postDid : undefined,
reason?.$type === "app.bsky.feed.defs#reasonRepost"
+
? `${formatActor(reason.by) ?? "Someone"} reposted @${originalAuthorHandle ?? formatDid(postDid)}`
const parentUri = replyParent?.uri ?? record.reply?.parent?.uri;
···
const { handle: resolvedReplyHandle } = useDidResolution(
replyParent?.author?.handle ? undefined : parentDid,
+
const replyTarget = formatReplyTarget(
+
const isReply = !!replyTarget;
const postPreview = text.slice(0, 100);
? `Post by ${did}: ${postPreview}${text.length > 100 ? '...' : ''}`
+
...listStyles.rowContainer,
? `1px solid var(--atproto-color-border)`
+
: "3px solid transparent",
+
<div style={{ ...listStyles.rowMeta, color: `var(--atproto-color-text-secondary)` }}>
+
<div style={listStyles.replyHeader}>
+
<span style={{ ...listStyles.replyArrow, color: `#1185FE` }}>
+
<span style={{ ...listStyles.replyText, color: `var(--atproto-color-text-secondary)` }}>
+
replying to {replyTarget}
+
style={{ ...listStyles.rowTime, color: `var(--atproto-color-text-secondary)`, marginLeft: "auto" }}
+
{!isReply && relative && (
style={{ ...listStyles.rowTime, color: `var(--atproto-color-text-secondary)` }}
···
+
rel="noopener noreferrer"
+
color: `var(--atproto-color-text)`,
+
<p style={{ ...listStyles.rowBody, color: `var(--atproto-color-text)` }}>
+
color: `var(--atproto-color-text)`,
···
} satisfies React.CSSProperties,
transition: "background-color 120ms ease",
} satisfies React.CSSProperties,
+
textDecoration: "none",
+
} satisfies React.CSSProperties,
+
} satisfies React.CSSProperties,
+
} satisfies React.CSSProperties,
+
} satisfies React.CSSProperties,
···
const directHandle = feedParent?.author?.handle;
const handle = directHandle ?? resolvedHandle;
const parentDid = feedParent?.author?.did;
const targetUri = feedParent?.uri ?? parentUri;
···
const parsed = parseAtUri(targetUri);
const did = parentDid ?? parsed?.did;
if (!did) return undefined;
+
return `@${formatDid(did)}`;