import GracefullyImage from '@components/GracefullyImage' import Icon from '@components/Icon' import { useNavigation } from '@react-navigation/native' import { StackNavigationProp } from '@react-navigation/stack' import { TabLocalStackParamList } from '@utils/navigation/navigators' import { useTimelineQuery } from '@utils/queryHooks/timeline' import { flattenPages } from '@utils/queryHooks/utils' import { StyleConstants } from '@utils/styles/constants' import { useTheme } from '@utils/styles/ThemeManager' import React, { useContext } from 'react' import { Dimensions, Pressable, View } from 'react-native' import { FlatList } from 'react-native-gesture-handler' import AccountContext from './Context' const AccountAttachments: React.FC = () => { const { account } = useContext(AccountContext) if (account?.suspended) return null const navigation = useNavigation>() const { colors } = useTheme() const DISPLAY_AMOUNT = 6 const width = (Dimensions.get('window').width - StyleConstants.Spacing.Global.PagePadding * 2) / 4 const { data } = useTimelineQuery({ page: 'Account', id: account?.id, exclude_reblogs: false, only_media: true, options: { enabled: !!account?.id } }) const flattenData = flattenPages(data) .filter(status => !(status as Mastodon.Status).sensitive) .splice(0, DISPLAY_AMOUNT) if (!flattenData.length) return null return ( { if (index === DISPLAY_AMOUNT - 1) { return ( { account && navigation.push('Tab-Shared-Attachments', { account }) }} children={ } /> } /> ) } else { return ( navigation.push('Tab-Shared-Toot', { toot: item })} dim /> ) } }} showsHorizontalScrollIndicator={false} /> ) } export default AccountAttachments