import analytics from '@components/analytics' 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 TimelineHeaderNotification from '@components/Timelines/Timeline/Shared/HeaderNotification' import TimelinePoll from '@components/Timelines/Timeline/Shared/Poll' import { useNavigation } from '@react-navigation/native' import { StackNavigationProp } from '@react-navigation/stack' 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 { notification: Mastodon.Notification queryKey: QueryKeyTimeline highlighted?: boolean } const TimelineNotifications: React.FC = ({ notification, queryKey, highlighted = false }) => { const localAccount = useSelector(getLocalAccount) const navigation = useNavigation< StackNavigationProp >() const actualAccount = notification.status ? notification.status.account : notification.account const onPress = useCallback(() => { analytics('timeline_notification_press') notification.status && navigation.push('Tab-Shared-Toot', { toot: notification.status }) }, []) return ( {notification.status ? ( {notification.status.content.length > 0 && ( )} {notification.status.poll && ( )} {notification.status.media_attachments.length > 0 && ( )} {notification.status.card && ( )} ) : null} {notification.status && ( d.id !== localAccount?.id) .map(d => d.acct)} reblog={false} /> )} ) } const styles = StyleSheet.create({ notificationView: { padding: StyleConstants.Spacing.Global.PagePadding, paddingBottom: 0 }, header: { flex: 1, width: '100%', flexDirection: 'row' } }) export default TimelineNotifications