import React from 'react' import {observer} from 'mobx-react-lite' import {Image, StyleSheet, Text, TouchableOpacity, View} from 'react-native' import {bsky, AdxUri} from '@adxp/mock-api' import moment from 'moment' import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' import {OnNavigateContent} from '../../routes/types' import {FeedViewItemModel} from '../../../state/models/feed-view' import {s} from '../../lib/styles' import {AVIS} from '../../lib/assets' export const FeedItem = observer(function FeedItem({ item, onNavigateContent, }: { item: FeedViewItemModel onNavigateContent: OnNavigateContent }) { const record = item.record as unknown as bsky.Post.Record const onPressOuter = () => { const urip = new AdxUri(item.uri) onNavigateContent('PostThread', { name: item.author.name, recordKey: urip.recordKey, }) } const onPressAuthor = () => { onNavigateContent('Profile', { name: item.author.name, }) } return ( {item.repostedBy && ( Reposted by {item.repostedBy.displayName} )} {item.author.displayName} @{item.author.name} · {moment(item.indexedAt).fromNow(true)} {record.text} {item.replyCount} {item.repostCount} {item.likeCount} ) }) const styles = StyleSheet.create({ outer: { borderTopWidth: 1, borderTopColor: '#e8e8e8', backgroundColor: '#fff', padding: 10, }, repostedBy: { flexDirection: 'row', paddingLeft: 70, }, repostedByIcon: { marginRight: 2, color: 'gray', }, layout: { flexDirection: 'row', }, layoutAvi: { width: 70, }, avi: { width: 60, height: 60, borderRadius: 30, resizeMode: 'cover', }, layoutContent: { flex: 1, }, meta: { flexDirection: 'row', paddingTop: 2, paddingBottom: 4, }, metaItem: { paddingRight: 5, }, postText: { paddingBottom: 5, }, ctrls: { flexDirection: 'row', }, ctrl: { flexDirection: 'row', alignItems: 'center', flex: 1, paddingLeft: 4, paddingRight: 4, }, ctrlIcon: { marginRight: 5, color: 'gray', }, })