import React, { useCallback } from 'react' import { Image, Pressable, StyleSheet, Text, View } from 'react-native' import { useNavigation } from '@react-navigation/native' import { StyleConstants } from '@utils/styles/constants' import { useTheme } from '@utils/styles/ThemeManager' export interface Props { card: Mastodon.Card } const TimelineCard: React.FC = ({ card }) => { const { theme } = useTheme() const navigation = useNavigation() const onPress = useCallback(() => { navigation.navigate('Screen-Shared-Webview', { uri: card.url }) }, []) return ( {card.image && ( )} {card.title} {card.description ? ( {card.description} ) : ( <> )} {card.url} ) } const styles = StyleSheet.create({ card: { flex: 1, flexDirection: 'row', height: StyleConstants.Avatar.L, marginTop: StyleConstants.Spacing.M, borderWidth: StyleSheet.hairlineWidth, borderRadius: 6 }, left: { width: StyleConstants.Avatar.L }, image: { width: '100%', height: '100%', borderTopLeftRadius: 6, borderBottomLeftRadius: 6 }, right: { flex: 1, padding: StyleConstants.Spacing.S }, rightTitle: { marginBottom: StyleConstants.Spacing.XS, fontWeight: StyleConstants.Font.Weight.Bold }, rightDescription: { marginBottom: StyleConstants.Spacing.XS } }) export default React.memo(TimelineCard, () => true)