import { OkResponse, TaggedNostrEvent } from "@snort/system"; import { SnortContext } from "@snort/system-react"; import { useContext, useState } from "react"; import { FormattedMessage } from "react-intl"; import AsyncButton from "@/Components/Button/AsyncButton"; import Modal from "@/Components/Modal/Modal"; import useRelays from "@/Hooks/useRelays"; export function ReBroadcaster({ onClose, ev }: { onClose: () => void; ev: TaggedNostrEvent }) { const [selected, setSelected] = useState>(); const [replies, setReplies] = useState>([]); const [sending, setSending] = useState(false); const system = useContext(SnortContext); const relays = useRelays(); async function sendReBroadcast() { setSending(true); setReplies([]); try { if (selected) { await Promise.all(selected.map(r => system.WriteOnceToRelay(r, ev).then(o => setReplies(v => [...v, o])))); } else { const rsp = await system.BroadcastEvent(ev); setReplies(rsp); } } catch (e) { console.error(e); } finally { setSending(false); } } return ( <>
{Object.keys(relays) .filter(el => relays[el].write) .map((r, i, a) => (
{r}
{replies.findLast(a => a.relay === r)?.message}
setSelected( e.target.checked && selected && selected.length === a.length - 1 ? undefined : a.filter(el => (el === r ? e.target.checked : !selected || selected.includes(el))), ) } />
))}
); }