about summary refs log tree commit diff
path: root/src/view/com/notifications/FeedItem.tsx
diff options
context:
space:
mode:
authorJoão Ferreiro <ferreiro@pinkroom.dev>2022-11-29 10:29:19 +0000
committerJoão Ferreiro <ferreiro@pinkroom.dev>2022-11-29 10:29:19 +0000
commit77ea3bfd0a28f76651ed425cf733abcf01ecaa24 (patch)
tree53f6806d2ca00366f6f3298e378aa6a59ca17e83 /src/view/com/notifications/FeedItem.tsx
parent3ce113f1076bbeeffc20888b3a28b2680ada8ab5 (diff)
parent88c868dd808d204fc29deb162609de984745b951 (diff)
downloadvoidsky-77ea3bfd0a28f76651ed425cf733abcf01ecaa24.tar.zst
Merge branch 'main' into upload-image
Diffstat (limited to 'src/view/com/notifications/FeedItem.tsx')
-rw-r--r--src/view/com/notifications/FeedItem.tsx51
1 files changed, 33 insertions, 18 deletions
diff --git a/src/view/com/notifications/FeedItem.tsx b/src/view/com/notifications/FeedItem.tsx
index 8741e4236..166b1bf99 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'
@@ -42,16 +43,22 @@ export const FeedItem = observer(function FeedItem({
     }
   }, [item])
 
+  if (item.additionalPost?.notFound) {
+    // don't render anything if the target post was deleted or unfindable
+    return <View />
+  }
+
   if (item.isReply) {
     return (
-      <Link
-        style={[
-          styles.outerMinimal,
-          item.isRead ? undefined : styles.outerUnread,
-        ]}
-        href={itemHref}
-        title={itemTitle}>
-        <Post uri={item.uri} />
+      <Link href={itemHref} title={itemTitle}>
+        <Post
+          uri={item.uri}
+          initView={item.additionalPost}
+          style={[
+            styles.outerMinimal,
+            item.isRead ? undefined : styles.outerUnread,
+          ]}
+        />
       </Link>
     )
   }
@@ -170,7 +177,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 +188,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,
@@ -207,8 +221,9 @@ const styles = StyleSheet.create({
     marginBottom: 0,
   },
   outerUnread: {
+    backgroundColor: colors.unreadNotifBg,
     borderWidth: 1,
-    borderColor: colors.blue2,
+    borderColor: colors.blue1,
   },
   layout: {
     flexDirection: 'row',