import { useState } from "react"; import { FormattedMessage } from "react-intl"; import { TaggedNostrEvent } from "@snort/system"; import useEventPublisher from "Hooks/useEventPublisher"; import Modal from "Element/Modal"; import messages from "./messages"; import useLogin from "Hooks/useLogin"; import { System } from "index"; export function ReBroadcaster({ onClose, ev }: { onClose: () => void; ev: TaggedNostrEvent }) { const [selected, setSelected] = useState>(); const publisher = useEventPublisher(); async function sendReBroadcast() { if (publisher) { if (selected) { await Promise.all(selected.map(r => System.WriteOnceToRelay(r, ev))); } else { System.BroadcastEvent(ev); } } } function onSubmit(ev: React.MouseEvent) { ev.stopPropagation(); sendReBroadcast().catch(console.warn); } const login = useLogin(); const relays = login.relays; function renderRelayCustomisation() { return (
{Object.keys(relays.item || {}) .filter(el => relays.item[el].write) .map((r, i, a) => (
{r}
setSelected( e.target.checked && selected && selected.length == a.length - 1 ? undefined : a.filter(el => (el === r ? e.target.checked : !selected || selected.includes(el))), ) } />
))}
); } return ( <> {renderRelayCustomisation()}
); }