Add OP thread numbering to feed posts (#11472)

This commit is contained in:
DS Boyce
2026-08-25 11:48:27 -07:00
committed by GitHub
parent 7750882fd0
commit f968c9e721
7 changed files with 122 additions and 13 deletions
+1
View File
@@ -872,6 +872,7 @@ let PostFeed = ({
<PostFeedItem
post={item.post}
record={item.record}
postNumbering={item.postNumbering}
reason={indexInSlice === 0 ? slice.reason : undefined}
feedContext={slice.feedContext}
reqId={slice.reqId}
+30 -2
View File
@@ -6,6 +6,7 @@ import {RichText as RichTextAPI} from '@bsky/sdk/richtext'
import {useQueryClient} from '@tanstack/react-query'
import {type ReasonFeedSource} from '#/lib/api/feed/types'
import {type FeedPostNumbering} from '#/lib/api/feed-manip'
import {MAX_POST_LINES} from '#/lib/constants'
import {useOpenComposer} from '#/lib/hooks/useOpenComposer'
import {usePalette} from '#/lib/hooks/usePalette'
@@ -27,6 +28,11 @@ import {
import {Link} from '#/view/com/util/Link'
import {PostMeta} from '#/view/com/util/PostMeta'
import {PreviewableUserAvatar} from '#/view/com/util/UserAvatar'
import {
POST_NUMBER_INLINE_OFFSET,
ThreadItemPostNumber,
useHasThreadItemPostNumber,
} from '#/screens/PostThread/components/ThreadItemPostNumber'
import {atoms as a, select, useTheme} from '#/alf'
import {
GalleryBleed,
@@ -53,6 +59,7 @@ import {PostFeedReason} from './PostFeedReason'
interface FeedItemProps {
record: app.bsky.feed.post.Main
postNumbering?: FeedPostNumbering
reason:
| app.bsky.feed.defs.ReasonRepost
| app.bsky.feed.defs.ReasonPin
@@ -75,6 +82,7 @@ interface FeedItemProps {
export function PostFeedItem({
post,
record,
postNumbering,
reason,
feedContext,
reqId,
@@ -112,6 +120,7 @@ export function PostFeedItem({
<FeedItemInner
post={postShadowed}
record={record}
postNumbering={postNumbering}
reason={reason}
feedContext={feedContext}
reqId={reqId}
@@ -137,6 +146,7 @@ export function PostFeedItem({
let FeedItemInner = ({
post,
record,
postNumbering,
reason,
feedContext,
reqId,
@@ -426,6 +436,7 @@ let FeedItemInner = ({
<PostContent
moderation={moderation}
richText={richText}
postNumbering={postNumbering}
postEmbed={post.embed}
postAuthor={post.author}
onOpenEmbed={onOpenEmbed}
@@ -457,6 +468,7 @@ FeedItemInner = memo(FeedItemInner)
let PostContent = ({
post,
postNumbering,
moderation,
richText,
postEmbed,
@@ -471,12 +483,14 @@ let PostContent = ({
postAuthor: app.bsky.feed.defs.PostView['author']
onOpenEmbed: () => void
post: app.bsky.feed.defs.PostView
postNumbering: FeedPostNumbering | undefined
additionalPostAlerts?: AppModerationCause[]
feedDescriptor?: string
}): React.ReactNode => {
const [limitLines, setLimitLines] = useState(
() => countLines(richText.text) >= MAX_POST_LINES,
)
const showPostNumber = useHasThreadItemPostNumber(postNumbering)
const record = useMemo<app.bsky.feed.post.Main | undefined>(
() =>
@@ -510,12 +524,26 @@ let PostContent = ({
style={[a.flex_1, a.text_md]}
authorHandle={postAuthor.handle}
shouldProxyLinks={true}
suffixOffset={POST_NUMBER_INLINE_OFFSET}
suffix={
!limitLines && showPostNumber ? (
<ThreadItemPostNumber value={postNumbering} />
) : undefined
}
/>
{limitLines && (
<ShowMoreTextButton style={[a.text_md]} onPress={onPressShowMore} />
<View style={[a.flex_row, a.align_center, a.gap_xs]}>
<ShowMoreTextButton
style={[a.text_md]}
onPress={onPressShowMore}
/>
<ThreadItemPostNumber inline={false} value={postNumbering} />
</View>
)}
</View>
) : undefined}
) : (
<ThreadItemPostNumber inline={false} value={postNumbering} />
)}
{record && <TranslatedPost hideTranslateLink post={post} />}
{postEmbed ? (
<View