diff options
Diffstat (limited to 'src/view')
-rw-r--r-- | src/view/com/notifications/NotificationFeedItem.tsx | 4 | ||||
-rw-r--r-- | src/view/com/post-thread/PostThreadItem.tsx | 17 | ||||
-rw-r--r-- | src/view/com/post/Post.tsx | 39 | ||||
-rw-r--r-- | src/view/com/posts/PostFeedItem.tsx | 27 |
4 files changed, 33 insertions, 54 deletions
diff --git a/src/view/com/notifications/NotificationFeedItem.tsx b/src/view/com/notifications/NotificationFeedItem.tsx index 0a460e77b..85f67919a 100644 --- a/src/view/com/notifications/NotificationFeedItem.tsx +++ b/src/view/com/notifications/NotificationFeedItem.tsx @@ -30,6 +30,7 @@ import {useLingui} from '@lingui/react' import {useNavigation} from '@react-navigation/native' import {useQueryClient} from '@tanstack/react-query' +import {MAX_POST_LINES} from '#/lib/constants' import {useAnimatedValue} from '#/lib/hooks/useAnimatedValue' import {usePalette} from '#/lib/hooks/usePalette' import {makeProfileLink} from '#/lib/routes/links' @@ -918,7 +919,8 @@ function AdditionalPostText({post}: {post?: AppBskyFeedDefs.PostView}) { {text?.length > 0 && ( <Text emoji - style={[a.text_sm, a.leading_snug, t.atoms.text_contrast_medium]}> + style={[a.text_sm, a.leading_snug, t.atoms.text_contrast_medium]} + numberOfLines={MAX_POST_LINES}> {text} </Text> )} diff --git a/src/view/com/post-thread/PostThreadItem.tsx b/src/view/com/post-thread/PostThreadItem.tsx index 15f5539c9..592224ff5 100644 --- a/src/view/com/post-thread/PostThreadItem.tsx +++ b/src/view/com/post-thread/PostThreadItem.tsx @@ -44,7 +44,7 @@ import {useMergedThreadgateHiddenReplies} from '#/state/threadgate-hidden-replie import {type PostSource} from '#/state/unstable-post-source' import {PostThreadFollowBtn} from '#/view/com/post-thread/PostThreadFollowBtn' import {ErrorMessage} from '#/view/com/util/error/ErrorMessage' -import {Link, TextLink} from '#/view/com/util/Link' +import {Link} from '#/view/com/util/Link' import {formatCount} from '#/view/com/util/numeric/format' import {PostMeta} from '#/view/com/util/PostMeta' import {PreviewableUserAvatar} from '#/view/com/util/UserAvatar' @@ -62,6 +62,7 @@ import {PostAlerts} from '#/components/moderation/PostAlerts' import {PostHider} from '#/components/moderation/PostHider' import {type AppModerationCause} from '#/components/Pills' import {Embed, PostEmbedViewContext} from '#/components/Post/Embed' +import {ShowMoreTextButton} from '#/components/Post/ShowMoreTextButton' import {PostControls} from '#/components/PostControls' import * as Prompt from '#/components/Prompt' import {RichText} from '#/components/RichText' @@ -685,16 +686,14 @@ let PostThreadItemLoaded = ({ authorHandle={post.author.handle} shouldProxyLinks={true} /> + {limitLines && ( + <ShowMoreTextButton + style={[a.text_md]} + onPress={onPressShowMore} + /> + )} </View> ) : undefined} - {limitLines ? ( - <TextLink - text={_(msg`Show More`)} - style={pal.link} - onPress={onPressShowMore} - href="#" - /> - ) : undefined} {post.embed && ( <View style={[a.pb_xs]}> <Embed diff --git a/src/view/com/post/Post.tsx b/src/view/com/post/Post.tsx index 19017f30f..6079f5c10 100644 --- a/src/view/com/post/Post.tsx +++ b/src/view/com/post/Post.tsx @@ -1,4 +1,4 @@ -import React, {useMemo, useState} from 'react' +import {useCallback, useMemo, useState} from 'react' import {type StyleProp, StyleSheet, View, type ViewStyle} from 'react-native' import { type AppBskyFeedDefs, @@ -9,8 +9,7 @@ import { RichText as RichTextAPI, } from '@atproto/api' import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' -import {msg, Trans} from '@lingui/macro' -import {useLingui} from '@lingui/react' +import {Trans} from '@lingui/macro' import {useQueryClient} from '@tanstack/react-query' import {MAX_POST_LINES} from '#/lib/constants' @@ -27,7 +26,7 @@ import { import {useModerationOpts} from '#/state/preferences/moderation-opts' import {precacheProfile} from '#/state/queries/profile' import {useSession} from '#/state/session' -import {Link, TextLink} from '#/view/com/util/Link' +import {Link} from '#/view/com/util/Link' import {PostMeta} from '#/view/com/util/PostMeta' import {Text} from '#/view/com/util/text/Text' import {PreviewableUserAvatar} from '#/view/com/util/UserAvatar' @@ -37,6 +36,7 @@ import {ContentHider} from '#/components/moderation/ContentHider' import {LabelsOnMyPost} from '#/components/moderation/LabelsOnMe' import {PostAlerts} from '#/components/moderation/PostAlerts' import {Embed, PostEmbedViewContext} from '#/components/Post/Embed' +import {ShowMoreTextButton} from '#/components/Post/ShowMoreTextButton' import {PostControls} from '#/components/PostControls' import {ProfileHoverCard} from '#/components/ProfileHoverCard' import {RichText} from '#/components/RichText' @@ -115,7 +115,6 @@ function PostInner({ }) { const queryClient = useQueryClient() const pal = usePalette('default') - const {_} = useLingui() const {openComposer} = useOpenComposer() const [limitLines, setLimitLines] = useState( () => countLines(richText?.text) >= MAX_POST_LINES, @@ -128,7 +127,7 @@ function PostInner({ replyAuthorDid = urip.hostname } - const onPressReply = React.useCallback(() => { + const onPressReply = useCallback(() => { openComposer({ replyTo: { uri: post.uri, @@ -141,18 +140,18 @@ function PostInner({ }) }, [openComposer, post, record, moderation]) - const onPressShowMore = React.useCallback(() => { + const onPressShowMore = useCallback(() => { setLimitLines(false) }, [setLimitLines]) - const onBeforePress = React.useCallback(() => { + const onBeforePress = useCallback(() => { precacheProfile(queryClient, post.author) }, [queryClient, post.author]) const {currentAccount} = useSession() const isMe = replyAuthorDid === currentAccount?.did - const [hover, setHover] = React.useState(false) + const [hover, setHover] = useState(false) return ( <Link href={itemHref} @@ -227,7 +226,7 @@ function PostInner({ style={[a.py_xs]} /> {richText.text ? ( - <View style={styles.postTextContainer}> + <View> <RichText enableTags testID="postText" @@ -237,16 +236,14 @@ function PostInner({ authorHandle={post.author.handle} shouldProxyLinks={true} /> + {limitLines && ( + <ShowMoreTextButton + style={[a.text_md]} + onPress={onPressShowMore} + /> + )} </View> ) : undefined} - {limitLines ? ( - <TextLink - text={_(msg`Show More`)} - style={pal.link} - onPress={onPressShowMore} - href="#" - /> - ) : undefined} {post.embed ? ( <Embed embed={post.embed} @@ -290,12 +287,6 @@ const styles = StyleSheet.create({ alert: { marginBottom: 6, }, - postTextContainer: { - flexDirection: 'row', - alignItems: 'center', - flexWrap: 'wrap', - overflow: 'hidden', - }, replyLine: { position: 'absolute', left: 36, diff --git a/src/view/com/posts/PostFeedItem.tsx b/src/view/com/posts/PostFeedItem.tsx index 6755f013d..96d5df5e9 100644 --- a/src/view/com/posts/PostFeedItem.tsx +++ b/src/view/com/posts/PostFeedItem.tsx @@ -41,7 +41,7 @@ import { setUnstablePostSource, } from '#/state/unstable-post-source' import {FeedNameText} from '#/view/com/util/FeedInfoText' -import {Link, TextLink, TextLinkOnWebOnly} from '#/view/com/util/Link' +import {Link, TextLinkOnWebOnly} from '#/view/com/util/Link' import {PostMeta} from '#/view/com/util/PostMeta' import {Text} from '#/view/com/util/text/Text' import {PreviewableUserAvatar} from '#/view/com/util/UserAvatar' @@ -54,6 +54,7 @@ import {PostAlerts} from '#/components/moderation/PostAlerts' import {type AppModerationCause} from '#/components/Pills' import {Embed} from '#/components/Post/Embed' import {PostEmbedViewContext} from '#/components/Post/Embed/types' +import {ShowMoreTextButton} from '#/components/Post/ShowMoreTextButton' import {PostControls} from '#/components/PostControls' import {DiscoverDebug} from '#/components/PostControls/DiscoverDebug' import {ProfileHoverCard} from '#/components/ProfileHoverCard' @@ -501,8 +502,6 @@ let PostContent = ({ post: AppBskyFeedDefs.PostView threadgateRecord?: AppBskyFeedThreadgate.Record }): React.ReactNode => { - const pal = usePalette('default') - const {_} = useLingui() const {currentAccount} = useSession() const [limitLines, setLimitLines] = useState( () => countLines(richText.text) >= MAX_POST_LINES, @@ -547,7 +546,7 @@ let PostContent = ({ additionalCauses={additionalPostAlerts} /> {richText.text ? ( - <View style={styles.postTextContainer}> + <> <RichText enableTags testID="postText" @@ -557,15 +556,10 @@ let PostContent = ({ authorHandle={postAuthor.handle} shouldProxyLinks={true} /> - </View> - ) : undefined} - {limitLines ? ( - <TextLink - text={_(msg`Show More`)} - style={pal.link} - onPress={onPressShowMore} - href="#" - /> + {limitLines && ( + <ShowMoreTextButton style={[a.text_md]} onPress={onPressShowMore} /> + )} + </> ) : undefined} {postEmbed ? ( <View style={[a.pb_xs]}> @@ -689,13 +683,6 @@ const styles = StyleSheet.create({ marginTop: 6, marginBottom: 6, }, - postTextContainer: { - flexDirection: 'row', - alignItems: 'center', - flexWrap: 'wrap', - paddingBottom: 2, - overflow: 'hidden', - }, contentHiderChild: { marginTop: 6, }, |