diff options
Diffstat (limited to 'src/view/com/posts')
-rw-r--r-- | src/view/com/posts/Feed.tsx | 21 | ||||
-rw-r--r-- | src/view/com/posts/FeedItem.tsx | 11 | ||||
-rw-r--r-- | src/view/com/posts/FeedSlice.tsx | 10 |
3 files changed, 30 insertions, 12 deletions
diff --git a/src/view/com/posts/Feed.tsx b/src/view/com/posts/Feed.tsx index 12171dc3b..681670cf7 100644 --- a/src/view/com/posts/Feed.tsx +++ b/src/view/com/posts/Feed.tsx @@ -3,6 +3,7 @@ import { ActivityIndicator, AppState, Dimensions, + ListRenderItemInfo, StyleProp, StyleSheet, View, @@ -31,6 +32,7 @@ import { import {useSession} from '#/state/session' import {useAnalytics} from 'lib/analytics/analytics' import {useInitialNumToRender} from 'lib/hooks/useInitialNumToRender' +import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' import {useTheme} from 'lib/ThemeContext' import {List, ListRef} from '../util/List' import {PostFeedLoadingPlaceholder} from '../util/LoadingPlaceholder' @@ -100,6 +102,7 @@ let Feed = ({ const checkForNewRef = React.useRef<(() => void) | null>(null) const lastFetchRef = React.useRef<number>(Date.now()) const [feedType, feedUri] = feed.split('|') + const {isTabletOrMobile} = useWebMediaQueries() const opts = React.useMemo( () => ({enabled, ignoreFilterFor}), @@ -279,7 +282,7 @@ let Feed = ({ // = const renderItem = React.useCallback( - ({item}: {item: any}) => { + ({item, index}: ListRenderItemInfo<any>) => { if (item === EMPTY_FEED_ITEM) { return renderEmptyState() } else if (item === ERROR_ITEM) { @@ -311,17 +314,23 @@ let Feed = ({ // -prf return <DiscoverFallbackHeader /> } - return <FeedSlice slice={item} /> + return ( + <FeedSlice + slice={item} + hideTopBorder={index === 0 && isTabletOrMobile} + /> + ) }, [ + isTabletOrMobile, + renderEmptyState, feed, - feedUri, error, onPressTryAgain, - onPressRetryLoadMore, - renderEmptyState, - _, savedFeedConfig, + _, + onPressRetryLoadMore, + feedUri, ], ) diff --git a/src/view/com/posts/FeedItem.tsx b/src/view/com/posts/FeedItem.tsx index b10ffe19f..72c8b8757 100644 --- a/src/view/com/posts/FeedItem.tsx +++ b/src/view/com/posts/FeedItem.tsx @@ -42,6 +42,7 @@ import {PostMeta} from '../util/PostMeta' import {Text} from '../util/text/Text' import {PreviewableUserAvatar} from '../util/UserAvatar' import {AviFollowButton} from './AviFollowButton' +import hairlineWidth = StyleSheet.hairlineWidth interface FeedItemProps { record: AppBskyFeedPost.Record @@ -53,6 +54,7 @@ interface FeedItemProps { isThreadLastChild?: boolean isThreadParent?: boolean feedContext: string | undefined + hideTopBorder?: boolean } export function FeedItem({ @@ -66,6 +68,7 @@ export function FeedItem({ isThreadChild, isThreadLastChild, isThreadParent, + hideTopBorder, }: FeedItemProps & {post: AppBskyFeedDefs.PostView}): React.ReactNode { const postShadowed = usePostShadow(post) const richText = useMemo( @@ -95,6 +98,7 @@ export function FeedItem({ isThreadChild={isThreadChild} isThreadLastChild={isThreadLastChild} isThreadParent={isThreadParent} + hideTopBorder={hideTopBorder} /> ) } @@ -113,6 +117,7 @@ let FeedItemInner = ({ isThreadChild, isThreadLastChild, isThreadParent, + hideTopBorder, }: FeedItemProps & { richText: RichTextAPI post: Shadow<AppBskyFeedDefs.PostView> @@ -186,8 +191,8 @@ let FeedItemInner = ({ isThreadLastChild || (!isThreadChild && !isThreadParent) ? 8 : undefined, + borderTopWidth: hideTopBorder || isThreadChild ? 0 : hairlineWidth, }, - isThreadChild ? styles.outerSmallTop : undefined, ] return ( @@ -445,16 +450,12 @@ function ReplyToLabel({profile}: {profile: AppBskyActorDefs.ProfileViewBasic}) { const styles = StyleSheet.create({ outer: { - borderTopWidth: 1, paddingLeft: 10, paddingRight: 15, // @ts-ignore web only -prf cursor: 'pointer', overflow: 'hidden', }, - outerSmallTop: { - borderTopWidth: 0, - }, replyLine: { width: 2, marginLeft: 'auto', diff --git a/src/view/com/posts/FeedSlice.tsx b/src/view/com/posts/FeedSlice.tsx index 6d8f038b4..aeb24e8bb 100644 --- a/src/view/com/posts/FeedSlice.tsx +++ b/src/view/com/posts/FeedSlice.tsx @@ -11,7 +11,13 @@ import {Link} from '../util/Link' import {Text} from '../util/text/Text' import {FeedItem} from './FeedItem' -let FeedSlice = ({slice}: {slice: FeedPostSlice}): React.ReactNode => { +let FeedSlice = ({ + slice, + hideTopBorder, +}: { + slice: FeedPostSlice + hideTopBorder?: boolean +}): React.ReactNode => { if (slice.isThread && slice.items.length > 3) { const last = slice.items.length - 1 return ( @@ -27,6 +33,7 @@ let FeedSlice = ({slice}: {slice: FeedPostSlice}): React.ReactNode => { moderation={slice.items[0].moderation} isThreadParent={isThreadParentAt(slice.items, 0)} isThreadChild={isThreadChildAt(slice.items, 0)} + hideTopBorder={hideTopBorder} /> <FeedItem key={slice.items[1]._reactKey} @@ -75,6 +82,7 @@ let FeedSlice = ({slice}: {slice: FeedPostSlice}): React.ReactNode => { isThreadLastChild={ isThreadChildAt(slice.items, i) && slice.items.length === i + 1 } + hideTopBorder={hideTopBorder && i === 0} /> ))} </> |