import TimelineActioned from '@components/Timelines/Timeline/Shared/Actioned' import TimelineActions from '@components/Timelines/Timeline/Shared/Actions' import TimelineAttachment from '@components/Timelines/Timeline/Shared/Attachment' import TimelineAvatar from '@components/Timelines/Timeline/Shared/Avatar' import TimelineCard from '@components/Timelines/Timeline/Shared/Card' import TimelineContent from '@components/Timelines/Timeline/Shared/Content' import TimelineHeaderDefault from '@components/Timelines/Timeline/Shared/HeaderDefault' import TimelinePoll from '@components/Timelines/Timeline/Shared/Poll' import { useNavigation } from '@react-navigation/native' import { QueryKeyTimeline } from '@utils/queryHooks/timeline' import { getLocalAccount } from '@utils/slices/instancesSlice' import { StyleConstants } from '@utils/styles/constants' import React, { useCallback } from 'react' import { Pressable, StyleSheet, View } from 'react-native' import { useSelector } from 'react-redux' export interface Props { item: Mastodon.Status queryKey?: QueryKeyTimeline index: number pinnedLength?: number highlighted?: boolean disableDetails?: boolean disableOnPress?: boolean } // When the poll is long const TimelineDefault: React.FC = ({ item, queryKey, index, pinnedLength, highlighted = false, disableDetails = false, disableOnPress = false }) => { const localAccount = useSelector(getLocalAccount) const navigation = useNavigation() let actualStatus = item.reblog ? item.reblog : item const onPress = useCallback( () => !disableOnPress && !highlighted && navigation.push('Screen-Shared-Toot', { toot: actualStatus }), [] ) return ( {item.reblog ? ( ) : pinnedLength && index < pinnedLength ? ( ) : null} {actualStatus.content.length > 0 && ( )} {queryKey && actualStatus.poll && ( )} {!disableDetails && actualStatus.media_attachments.length > 0 && ( )} {!disableDetails && actualStatus.card && ( )} {queryKey && !disableDetails && ( )} ) } const styles = StyleSheet.create({ statusView: { padding: StyleConstants.Spacing.Global.PagePadding, paddingBottom: StyleConstants.Spacing.S }, header: { flex: 1, width: '100%', flexDirection: 'row' } }) export default TimelineDefault