about summary refs log tree commit diff
path: root/src/view/com/feed
diff options
context:
space:
mode:
Diffstat (limited to 'src/view/com/feed')
-rw-r--r--src/view/com/feed/Feed.tsx15
-rw-r--r--src/view/com/feed/FeedItem.tsx8
2 files changed, 19 insertions, 4 deletions
diff --git a/src/view/com/feed/Feed.tsx b/src/view/com/feed/Feed.tsx
index c666fc05e..8283e275e 100644
--- a/src/view/com/feed/Feed.tsx
+++ b/src/view/com/feed/Feed.tsx
@@ -1,9 +1,10 @@
-import React from 'react'
+import React, {useRef} from 'react'
 import {observer} from 'mobx-react-lite'
 import {Text, View, FlatList} from 'react-native'
 import {OnNavigateContent} from '../../routes/types'
 import {FeedViewModel, FeedViewItemModel} from '../../../state/models/feed-view'
 import {FeedItem} from './FeedItem'
+import {ShareBottomSheet} from '../sheets/SharePost'
 
 export const Feed = observer(function Feed({
   feed,
@@ -12,12 +13,21 @@ export const Feed = observer(function Feed({
   feed: FeedViewModel
   onNavigateContent: OnNavigateContent
 }) {
+  const shareSheetRef = useRef<{open: (uri: string) => void}>()
+
+  const onPressShare = (uri: string) => {
+    shareSheetRef.current?.open(uri)
+  }
   // TODO optimize renderItem or FeedItem, we're getting this notice from RN: -prf
   //   VirtualizedList: You have a large list that is slow to update - make sure your
   //   renderItem function renders components that follow React performance best practices
   //   like PureComponent, shouldComponentUpdate, etc
   const renderItem = ({item}: {item: FeedViewItemModel}) => (
-    <FeedItem item={item} onNavigateContent={onNavigateContent} />
+    <FeedItem
+      item={item}
+      onNavigateContent={onNavigateContent}
+      onPressShare={onPressShare}
+    />
   )
   const onRefresh = () => {
     feed.refresh().catch(err => console.error('Failed to refresh', err))
@@ -42,6 +52,7 @@ export const Feed = observer(function Feed({
         />
       )}
       {feed.isEmpty && <Text>This feed is empty!</Text>}
+      <ShareBottomSheet ref={shareSheetRef} />
     </View>
   )
 })
diff --git a/src/view/com/feed/FeedItem.tsx b/src/view/com/feed/FeedItem.tsx
index 9f3ec7c56..018b58179 100644
--- a/src/view/com/feed/FeedItem.tsx
+++ b/src/view/com/feed/FeedItem.tsx
@@ -12,9 +12,11 @@ import {AVIS} from '../../lib/assets'
 export const FeedItem = observer(function FeedItem({
   item,
   onNavigateContent,
+  onPressShare,
 }: {
   item: FeedViewItemModel
   onNavigateContent: OnNavigateContent
+  onPressShare: (uri: string) => void
 }) {
   const record = item.record as unknown as bsky.Post.Record
 
@@ -118,12 +120,14 @@ export const FeedItem = observer(function FeedItem({
                 {item.likeCount}
               </Text>
             </TouchableOpacity>
-            <View style={styles.ctrl}>
+            <TouchableOpacity
+              style={styles.ctrl}
+              onPress={() => onPressShare(item.uri)}>
               <FontAwesomeIcon
                 style={styles.ctrlIcon}
                 icon="share-from-square"
               />
-            </View>
+            </TouchableOpacity>
           </View>
         </View>
       </View>