From e6e1ca3415dc056588d10960cfe4a80cfb57a1d0 Mon Sep 17 00:00:00 2001 From: Eric Bailey Date: Thu, 29 May 2025 21:33:51 -0500 Subject: [PATCH] Fix read more extra space --- .../PostThread/components/ThreadReply.tsx | 1 - src/state/queries/usePostThread/traversal.ts | 1 + src/state/queries/usePostThread/types.ts | 27 ++++++++----------- src/state/queries/usePostThread/utils.ts | 8 +++++- 4 files changed, 19 insertions(+), 18 deletions(-) diff --git a/src/screens/PostThread/components/ThreadReply.tsx b/src/screens/PostThread/components/ThreadReply.tsx index ea72a7fa98..993282e868 100644 --- a/src/screens/PostThread/components/ThreadReply.tsx +++ b/src/screens/PostThread/components/ThreadReply.tsx @@ -221,7 +221,6 @@ const ThreadReplyInner = memo(function ThreadReplyInner({ !item.ui.showChildReplyLine && a.pb_sm, ], item.ui.isLastChild && - !item.ui.precedesParentReadMore && !item.ui.precedesChildReadMore && [a.pb_sm], ]}> {item.ui.indent > 1 && ( diff --git a/src/state/queries/usePostThread/traversal.ts b/src/state/queries/usePostThread/traversal.ts index 8554910422..e9c92781f1 100644 --- a/src/state/queries/usePostThread/traversal.ts +++ b/src/state/queries/usePostThread/traversal.ts @@ -341,6 +341,7 @@ export function traverse( * it itself needs a "read more" */ if (metadata.repliesUnhydrated > 0 && metadata.isLastChild) { + metadata.precedesChildReadMore = true items.splice(i + 1, 0, views.readMore(metadata)) i++ // skip next iteration } diff --git a/src/state/queries/usePostThread/types.ts b/src/state/queries/usePostThread/types.ts index 1361afcbe0..978f2287c0 100644 --- a/src/state/queries/usePostThread/types.ts +++ b/src/state/queries/usePostThread/types.ts @@ -51,18 +51,7 @@ export type Slice = indent: number isLastChild: boolean skippedIndentIndices: Set - /** - * Populated during the final traversal of the thread. Denotes whether - * there is a "Read more" link for the parent immediately following - * this item. - */ - precedesParentReadMore?: boolean - /** - * Populated during the final traversal of the thread. Denotes whether - * there is a "Read more" link for this item immediately following - * this item. - */ - precedesChildReadMore?: boolean + precedesChildReadMore: boolean } } | { @@ -127,15 +116,21 @@ export type TraversalMetadata = { * The depth of the slice immediately following this one, if it exists. */ nextItemDepth?: number - /** - * The depth of the slice immediately preceding this one, if it exists. - */ - prevItemDepth?: number /** * This is a live reference to the parent metadata object. Mutations to this * are available for later use in children. */ parentMetadata?: TraversalMetadata + /** + * Populated during the final traversal of the thread. Denotes whether + * there is a "Read more" link for this item immediately following + * this item. + */ + precedesChildReadMore: boolean + /** + * The depth of the slice immediately preceding this one, if it exists. + */ + prevItemDepth?: number /** * Any data needed to be passed along to the "read more" items. Keep this * trim for better memory usage. diff --git a/src/state/queries/usePostThread/utils.ts b/src/state/queries/usePostThread/utils.ts index 91f7042626..3db8121c2f 100644 --- a/src/state/queries/usePostThread/utils.ts +++ b/src/state/queries/usePostThread/utils.ts @@ -76,8 +76,12 @@ export function getTraversalMetadata({ */ isPartOfLastBranchFromDepth: item.depth === 1 ? 1 : undefined, nextItemDepth: nextItem?.depth, - prevItemDepth: prevItem?.depth, parentMetadata, + prevItemDepth: prevItem?.depth, + /* + * Unknown until after traversal + */ + precedesChildReadMore: false, postData: { uri: item.uri, authorHandle: item.value.post.author.handle, @@ -119,6 +123,7 @@ export function getThreadPostUI({ skippedIndentIndices, repliesSeenCount, repliesUnhydrated, + precedesChildReadMore, }: TraversalMetadata): Extract['ui'] { // TODO might be able to simplify this const isReplyAndHasReplies = @@ -138,5 +143,6 @@ export function getThreadPostUI({ */ isLastChild, //nextItemDepth === undefined || nextItemDepth < depth, skippedIndentIndices, + precedesChildReadMore: precedesChildReadMore ?? false, } }