From 7763aa2e0a4aee2e2008a5d4b63cfd37a91d362e Mon Sep 17 00:00:00 2001 From: Chad Curtis Date: Wed, 1 Apr 2026 02:45:00 -0500 Subject: [PATCH] Add broadcast event option to overflow menu --- src/components/NoteMoreMenu.tsx | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/components/NoteMoreMenu.tsx b/src/components/NoteMoreMenu.tsx index b7a9e33e..f40f977a 100644 --- a/src/components/NoteMoreMenu.tsx +++ b/src/components/NoteMoreMenu.tsx @@ -17,6 +17,7 @@ import { PanelLeft, Copy, Check, + Radio, } from 'lucide-react'; import { Dialog, @@ -43,6 +44,7 @@ import { EmojifiedText } from '@/components/CustomEmoji'; import { ReplyComposeModal } from '@/components/ReplyComposeModal'; import { ReportDialog } from '@/components/ReportDialog'; import { AddToListDialog } from '@/components/AddToListDialog'; +import { useNostr } from '@nostrify/react'; import { useBookmarks } from '@/hooks/useBookmarks'; import { usePinnedNotes } from '@/hooks/usePinnedNotes'; import { useCurrentUser } from '@/hooks/useCurrentUser'; @@ -281,6 +283,7 @@ interface NoteMoreMenuContentProps extends NoteMoreMenuProps { function NoteMoreMenuContent({ event, open, onOpenChange, onReport, onMention, onAddToList, onViewEventJson, onDelete }: NoteMoreMenuContentProps) { const navigate = useNavigate(); + const { nostr } = useNostr(); const { user } = useCurrentUser(); const { isBookmarked, toggleBookmark } = useBookmarks(); const bookmarked = isBookmarked(event.id); @@ -329,6 +332,16 @@ function NoteMoreMenuContent({ event, open, onOpenChange, onReport, onMention, o close(); }; + const handleBroadcast = async () => { + close(); + try { + await nostr.event(event, { signal: AbortSignal.timeout(5000) }); + toast({ title: 'Event broadcast to relays' }); + } catch { + toast({ title: 'Failed to broadcast event', variant: 'destructive' }); + } + }; + const handleTogglePin = () => { togglePin.mutate(event.id, { onSuccess: () => { @@ -425,6 +438,11 @@ function NoteMoreMenuContent({ event, open, onOpenChange, onReport, onMention, o label="View Event JSON" onClick={onViewEventJson} /> + } + label="Broadcast Event" + onClick={handleBroadcast} + /> } label={bookmarked ? 'Remove Bookmark' : 'Bookmark'}