import { TaggedNostrEvent } from "@snort/system"; import { SnortContext } from "@snort/system-react"; import { useContext, useState } from "react"; import { FormattedMessage } from "react-intl"; import Modal from "@/Components/Modal/Modal"; import useLogin from "@/Hooks/useLogin"; import AsyncButton from "./Button/AsyncButton"; import messages from "./messages"; export function ReBroadcaster({ onClose, ev }: { onClose: () => void; ev: TaggedNostrEvent }) { const [selected, setSelected] = useState>(); const system = useContext(SnortContext); const { relays } = useLogin(s => ({ relays: s.relays })); async function sendReBroadcast() { if (selected) { await Promise.all(selected.map(r => system.WriteOnceToRelay(r, ev))); } else { system.BroadcastEvent(ev); } } 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()}
); }