diff options
Diffstat (limited to 'src/view')
-rw-r--r-- | src/view/com/notifications/FeedItem.tsx | 28 | ||||
-rw-r--r-- | src/view/com/post/Post.tsx | 14 |
2 files changed, 28 insertions, 14 deletions
diff --git a/src/view/com/notifications/FeedItem.tsx b/src/view/com/notifications/FeedItem.tsx index 8741e4236..1b9fe51f0 100644 --- a/src/view/com/notifications/FeedItem.tsx +++ b/src/view/com/notifications/FeedItem.tsx @@ -4,11 +4,12 @@ import {StyleSheet, Text, View} from 'react-native' import {AtUri} from '../../../third-party/uri' import {FontAwesomeIcon, Props} from '@fortawesome/react-native-fontawesome' import {NotificationsViewItemModel} from '../../../state/models/notifications-view' +import {PostThreadViewModel} from '../../../state/models/post-thread-view' import {s, colors} from '../../lib/styles' import {ago, pluralize} from '../../../lib/strings' import {UpIconSolid} from '../../lib/icons' import {UserAvatar} from '../util/UserAvatar' -import {PostText} from '../post/PostText' +import {ErrorMessage} from '../util/ErrorMessage' import {Post} from '../post/Post' import {Link} from '../util/Link' import {InviteAccepter} from './InviteAccepter' @@ -51,7 +52,7 @@ export const FeedItem = observer(function FeedItem({ ]} href={itemHref} title={itemTitle}> - <Post uri={item.uri} /> + <Post uri={item.uri} initView={item.additionalPost} /> </Link> ) } @@ -170,7 +171,7 @@ export const FeedItem = observer(function FeedItem({ </Text> </View> {item.isUpvote || item.isRepost || item.isTrend ? ( - <PostText uri={item.subjectUri} style={[s.gray5]} /> + <AdditionalPostText additionalPost={item.additionalPost} /> ) : ( <></> )} @@ -181,17 +182,24 @@ export const FeedItem = observer(function FeedItem({ <InviteAccepter item={item} /> </View> )} - {item.isReply ? ( - <View style={s.pt5}> - <Post uri={item.uri} /> - </View> - ) : ( - <></> - )} </Link> ) }) +function AdditionalPostText({ + additionalPost, +}: { + additionalPost?: PostThreadViewModel +}) { + if (!additionalPost) { + return <View /> + } + if (additionalPost.error) { + return <ErrorMessage message={additionalPost.error} /> + } + return <Text style={[s.gray5]}>{additionalPost.thread?.record.text}</Text> +} + const styles = StyleSheet.create({ outer: { backgroundColor: colors.white, diff --git a/src/view/com/post/Post.tsx b/src/view/com/post/Post.tsx index 4d668cac3..033cc6560 100644 --- a/src/view/com/post/Post.tsx +++ b/src/view/com/post/Post.tsx @@ -15,19 +15,25 @@ import {UserAvatar} from '../util/UserAvatar' import {useStores} from '../../../state' import {s, colors} from '../../lib/styles' -export const Post = observer(function Post({uri}: {uri: string}) { +export const Post = observer(function Post({ + uri, + initView, +}: { + uri: string + initView?: PostThreadViewModel +}) { const store = useStores() - const [view, setView] = useState<PostThreadViewModel | undefined>() + const [view, setView] = useState<PostThreadViewModel | undefined>(initView) const [deleted, setDeleted] = useState(false) useEffect(() => { - if (view?.params.uri === uri) { + if (initView || view?.params.uri === uri) { return // no change needed? or trigger refresh? } const newView = new PostThreadViewModel(store, {uri, depth: 0}) setView(newView) newView.setup().catch(err => console.error('Failed to fetch post', err)) - }, [uri, view?.params.uri, store]) + }, [initView, uri, view?.params.uri, store]) // deleted // = |