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",
"httpCache": "",
"animalNamePlaceholders": false,
"showNoteBroadcaster": true,
"defaultZapPoolFee": 0.5,
"features": {
"analytics": true,

View File

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

View File

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

View File

@ -10,6 +10,7 @@ import { removeRelay } from "@/Login";
import useLogin from "@/Hooks/useLogin";
import useEventPublisher from "@/Hooks/useEventPublisher";
import { saveRelays } from "@/Pages/settings/Relays";
import {sendEventToRelays} from "@/Element/Event/NoteBroadcaster/util";
export function NoteBroadcaster({
evs,
@ -25,26 +26,8 @@ export function NoteBroadcaster({
const login = useLogin();
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(() => {
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) {

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 { ZapTarget } from "@/Zapper";
import { useNoteCreator } from "@/State/NoteCreator";
import { NoteBroadcaster } from "./NoteBroadcaster";
import { NoteBroadcaster } from "./NoteBroadcaster/NoteBroadcaster";
import FileUploadProgress from "./FileUpload";
import { ToggleSwitch } from "@/Icons/Toggle";
import NostrBandApi from "@/External/NostrBand";
import { useLocale } from "@/IntlProvider";
import {sendEventToRelays} from "@/Element/Event/NoteBroadcaster/util";
export function NoteCreator() {
const { formatMessage } = useIntl();
const uploader = useFileUpload();
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 note = useNoteCreator();
const relays = login.relays;
@ -150,9 +151,14 @@ export function NoteCreator() {
async function sendNote() {
const ev = await buildNote();
if (ev) {
const events = (note.otherEvents ?? []).concat(ev);
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();
}
}
}