hide NoteBroadcaster in iris

This commit is contained in:
Martti Malmi
2023-11-28 10:40:36 +02:00
parent 31129fab2c
commit 9d0f7f4596
6 changed files with 39 additions and 23 deletions

View File

@ -10,6 +10,7 @@
"publicDir": "public/snort", "publicDir": "public/snort",
"httpCache": "", "httpCache": "",
"animalNamePlaceholders": false, "animalNamePlaceholders": false,
"showNoteBroadcaster": true,
"defaultZapPoolFee": 0.5, "defaultZapPoolFee": 0.5,
"features": { "features": {
"analytics": true, "analytics": true,

View File

@ -10,6 +10,8 @@
"publicDir": "public/iris", "publicDir": "public/iris",
"httpCache": "https://api.iris.to", "httpCache": "https://api.iris.to",
"animalNamePlaceholders": true, "animalNamePlaceholders": true,
"showNoteBroadcaster": false,
"defaultZapPoolFee": 0.5,
"features": { "features": {
"analytics": true, "analytics": true,
"subscriptions": false, "subscriptions": false,

View File

@ -51,7 +51,8 @@ declare const CONFIG: {
navLogo: string | null; navLogo: string | null;
httpCache: string; httpCache: string;
animalNamePlaceholders: boolean; animalNamePlaceholders: boolean;
defaultZapPoolFee?: number; showNoteBroadcaster: boolean;
defaultZapPoolFee: number;
features: { features: {
analytics: boolean; analytics: boolean;
subscriptions: boolean; subscriptions: boolean;

View File

@ -10,6 +10,7 @@ import { removeRelay } from "@/Login";
import useLogin from "@/Hooks/useLogin"; import useLogin from "@/Hooks/useLogin";
import useEventPublisher from "@/Hooks/useEventPublisher"; import useEventPublisher from "@/Hooks/useEventPublisher";
import { saveRelays } from "@/Pages/settings/Relays"; import { saveRelays } from "@/Pages/settings/Relays";
import {sendEventToRelays} from "@/Element/Event/NoteBroadcaster/util";
export function NoteBroadcaster({ export function NoteBroadcaster({
evs, evs,
@ -25,26 +26,8 @@ export function NoteBroadcaster({
const login = useLogin(); const login = useLogin();
const { publisher, system } = useEventPublisher(); const { publisher, system } = useEventPublisher();
async function sendEventToRelays(ev: NostrEvent) {
if (customRelays) {
return removeUndefined(
await Promise.all(
customRelays.map(async r => {
try {
return await system.WriteOnceToRelay(r, ev);
} catch (e) {
console.error(e);
}
}),
),
);
} else {
return await system.BroadcastEvent(ev, r => setResults(x => [...x, r]));
}
}
useEffect(() => { useEffect(() => {
Promise.all(evs.map(a => sendEventToRelays(a)).flat()).catch(console.error); Promise.all(evs.map(a => sendEventToRelays(system, a, customRelays, setResults)).flat()).catch(console.error);
}, []); }, []);
async function removeRelayFromResult(r: OkResponse) { async function removeRelayFromResult(r: OkResponse) {

View File

@ -0,0 +1,23 @@
import {NostrEvent, OkResponse, SystemInterface} from "@snort/system";
import {removeUndefined} from "@snort/shared";
export async function sendEventToRelays(system: SystemInterface, ev: NostrEvent, customRelays?: Array<string>, setResults?: (x: Array<OkResponse>) => void) {
console.log("sendEventToRelays", ev, customRelays);
if (customRelays) {
return removeUndefined(
await Promise.all(
customRelays.map(async r => {
try {
return await system.WriteOnceToRelay(r, ev);
} catch (e) {
console.error(e);
}
}),
),
);
} else {
const responses: OkResponse[] = await system.BroadcastEvent(ev);
setResults?.(responses);
return responses;
}
}

View File

@ -21,17 +21,18 @@ import { AsyncIcon } from "@/Element/AsyncIcon";
import { fetchNip05Pubkey } from "@snort/shared"; import { fetchNip05Pubkey } from "@snort/shared";
import { ZapTarget } from "@/Zapper"; import { ZapTarget } from "@/Zapper";
import { useNoteCreator } from "@/State/NoteCreator"; import { useNoteCreator } from "@/State/NoteCreator";
import { NoteBroadcaster } from "./NoteBroadcaster"; import { NoteBroadcaster } from "./NoteBroadcaster/NoteBroadcaster";
import FileUploadProgress from "./FileUpload"; import FileUploadProgress from "./FileUpload";
import { ToggleSwitch } from "@/Icons/Toggle"; import { ToggleSwitch } from "@/Icons/Toggle";
import NostrBandApi from "@/External/NostrBand"; import NostrBandApi from "@/External/NostrBand";
import { useLocale } from "@/IntlProvider"; import { useLocale } from "@/IntlProvider";
import {sendEventToRelays} from "@/Element/Event/NoteBroadcaster/util";
export function NoteCreator() { export function NoteCreator() {
const { formatMessage } = useIntl(); const { formatMessage } = useIntl();
const uploader = useFileUpload(); const uploader = useFileUpload();
const login = useLogin(s => ({ relays: s.relays, publicKey: s.publicKey, pow: s.appData.item.preferences.pow })); const login = useLogin(s => ({ relays: s.relays, publicKey: s.publicKey, pow: s.appData.item.preferences.pow }));
const { publisher: pub } = useEventPublisher(); const { system, publisher: pub } = useEventPublisher();
const publisher = login.pow ? pub?.pow(login.pow, GetPowWorker()) : pub; const publisher = login.pow ? pub?.pow(login.pow, GetPowWorker()) : pub;
const note = useNoteCreator(); const note = useNoteCreator();
const relays = login.relays; const relays = login.relays;
@ -150,9 +151,14 @@ export function NoteCreator() {
async function sendNote() { async function sendNote() {
const ev = await buildNote(); const ev = await buildNote();
if (ev) { if (ev) {
const events = (note.otherEvents ?? []).concat(ev);
note.update(n => { note.update(n => {
n.sending = (note.otherEvents ?? []).concat(ev); n.sending = events;
}); });
if (!CONFIG.showNoteBroadcaster) {
Promise.all(events.map(a => sendEventToRelays(system, a, note.selectedCustomRelays)).flat()).catch(console.error);
reset();
}
} }
} }