import Button from '@components/Button' import menuAccount from '@components/contextMenu/account' import menuInstance from '@components/contextMenu/instance' import menuShare from '@components/contextMenu/share' import menuStatus from '@components/contextMenu/status' import Icon from '@components/Icon' import { RelationshipIncoming, RelationshipOutgoing } from '@components/Relationship' import browserPackage from '@helpers/browserPackage' import { getInstanceUrl } from '@utils/slices/instancesSlice' import { StyleConstants } from '@utils/styles/constants' import { useTheme } from '@utils/styles/ThemeManager' import * as WebBrowser from 'expo-web-browser' import React, { useContext, useState } from 'react' import { useTranslation } from 'react-i18next' import { Platform, Pressable, View } from 'react-native' import { useSelector } from 'react-redux' import * as DropdownMenu from 'zeego/dropdown-menu' import StatusContext from './Context' 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 type Props = { notification: Mastodon.Notification } const TimelineHeaderNotification: React.FC = ({ notification }) => { const { t } = useTranslation('componentTimeline') const { queryKey, status } = useContext(StatusContext) const { colors } = useTheme() const [openChange, setOpenChange] = useState(false) const mShare = menuShare({ visibility: status?.visibility, type: 'status', url: status?.url || status?.uri }) const mAccount = menuAccount({ type: 'status', openChange, account: status?.account, ...(status && { status }), queryKey }) const mStatus = menuStatus({ status, queryKey }) const mInstance = menuInstance({ status, queryKey }) const url = useSelector(getInstanceUrl) const actions = () => { switch (notification.type) { case 'follow': return case 'follow_request': return case 'admin.report': return (