Add broadcast event option to overflow menu

This commit is contained in:
Chad Curtis
2026-04-01 02:45:00 -05:00
parent 500f06b538
commit 7763aa2e0a
+18
View File
@@ -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}
/>
<MenuItem
icon={<Radio className="size-5" />}
label="Broadcast Event"
onClick={handleBroadcast}
/>
<MenuItem
icon={<Bookmark className={cn("size-5", bookmarked && "fill-current")} />}
label={bookmarked ? 'Remove Bookmark' : 'Bookmark'}