import Icon from '@components/Icon' import { RelationshipIncoming, RelationshipOutgoing } from '@components/Relationship' import { useNavigation } from '@react-navigation/native' import { QueryKeyTimeline } from '@utils/queryHooks/timeline' import { StyleConstants } from '@utils/styles/constants' import { useTheme } from '@utils/styles/ThemeManager' import React, { useMemo } from 'react' import { Pressable, StyleSheet, View } from 'react-native' import HeaderSharedAccount from './HeaderShared/Account' import HeaderSharedApplication from './HeaderShared/Application' import HeaderSharedCreated from './HeaderShared/Created' import HeaderSharedMuted from './HeaderShared/Muted' import HeaderSharedVisibility from './HeaderShared/Visibility' export interface Props { queryKey: QueryKeyTimeline notification: Mastodon.Notification } const TimelineHeaderNotification = React.memo( ({ queryKey, notification }: Props) => { const navigation = useNavigation() const { theme } = useTheme() const actions = useMemo(() => { switch (notification.type) { case 'follow': return case 'follow_request': return default: if (notification.status) { return ( navigation.navigate('Screen-Actions', { queryKey, status: notification.status, url: notification.status?.url || notification.status?.uri, type: 'status' }) } children={ } /> ) } } }, [notification.type]) return ( {notification.status?.visibility ? ( ) : null} {actions} ) }, () => true ) const styles = StyleSheet.create({ base: { flex: 1, flexDirection: 'row' }, meta: { flexDirection: 'row', alignItems: 'center', marginTop: StyleConstants.Spacing.XS, marginBottom: StyleConstants.Spacing.S }, relationship: { marginLeft: StyleConstants.Spacing.M } }) export default TimelineHeaderNotification