import { useSecondaryPage } from '@/PageManager' import { Button } from '@/components/ui/button' import { Skeleton } from '@/components/ui/skeleton' import { isMentioningMutedUsers } from '@/lib/event' import { toNote } from '@/lib/link' import { useContentPolicy } from '@/providers/ContentPolicyProvider' import { useMuteList } from '@/providers/MuteListProvider' import { useScreenSize } from '@/providers/ScreenSizeProvider' import { Event } from 'nostr-tools' import { useMemo, useState } from 'react' import { useTranslation } from 'react-i18next' import ClientTag from '../ClientTag' import Collapsible from '../Collapsible' import Content from '../Content' import { FormattedTimestamp } from '../FormattedTimestamp' import Nip05 from '../Nip05' import NoteOptions from '../NoteOptions' import StuffStats from '../StuffStats' import ParentNotePreview from '../ParentNotePreview' import TranslateButton from '../TranslateButton' import UserAvatar from '../UserAvatar' import Username from '../Username' export default function ReplyNote({ event, parentEventId, onClickParent = () => {}, highlight = false }: { event: Event parentEventId?: string onClickParent?: () => void highlight?: boolean }) { const { t } = useTranslation() const { isSmallScreen } = useScreenSize() const { push } = useSecondaryPage() const { mutePubkeySet } = useMuteList() const { hideContentMentioningMutedUsers } = useContentPolicy() const [showMuted, setShowMuted] = useState(false) const show = useMemo(() => { if (showMuted) { return true } if (mutePubkeySet.has(event.pubkey)) { return false } if (hideContentMentioningMutedUsers && isMentioningMutedUsers(event, mutePubkeySet)) { return false } return true }, [showMuted, mutePubkeySet, event, hideContentMentioningMutedUsers]) return (
push(toNote(event))} >
{parentEventId && ( { e.stopPropagation() onClickParent() }} /> )} {show ? ( ) : ( )}
{show && }
) } export function ReplyNoteSkeleton() { return (
) }