Add broadcast event option to overflow menu
This commit is contained in:
@@ -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'}
|
||||
|
||||
Reference in New Issue
Block a user