import { SnortContext } from "@snort/system-react"; import { useContext, useMemo, useSyncExternalStore } from "react"; import { FormattedMessage, FormattedNumber } from "react-intl"; import AsyncButton from "@/Components/Button/AsyncButton"; import usePreferences from "@/Hooks/usePreferences"; import { ZapPoolTarget } from "@/Pages/ZapPool/ZapPoolTarget"; import { bech32ToHex, getRelayName, trackEvent, unwrap } from "@/Utils"; import { SnortPubKey } from "@/Utils/Const"; import { UploaderServices } from "@/Utils/Upload"; import { ZapPoolController, ZapPoolRecipientType } from "@/Utils/ZapPoolController"; import { useWallet } from "@/Wallet"; const DataProviders = [ { name: "nostr.band", owner: bech32ToHex("npub1sx9rnd03vs34lp39fvfv5krwlnxpl90f3dzuk8y3cuwutk2gdhdqjz6g8m"), }, ]; export function ZapPoolPageInner() { const defaultZapAmount = usePreferences(s => s.defaultZapAmount); const system = useContext(SnortContext); const zapPool = useSyncExternalStore( c => unwrap(ZapPoolController).hook(c), () => unwrap(ZapPoolController).snapshot(), ); const { wallet } = useWallet(); const relayConnections = useMemo(() => { return [...system.pool] .map(([, a]) => { if (a.Info?.pubkey && !a.Ephemeral) { return { address: a.Address, pubkey: a.Info.pubkey, }; } }) .filter(a => a !== undefined) .map(unwrap); }, []); const sumPending = zapPool.reduce((acc, v) => acc + v.sum, 0); return (

), }} />

), nOut: ( ), }} />

), }} />

{wallet && ( { trackEvent("ZapPool", { manual: true }); await ZapPoolController?.payout(wallet); }}> )}

b.pubkey === bech32ToHex(SnortPubKey) && b.type === ZapPoolRecipientType.Generic) ?? { type: ZapPoolRecipientType.Generic, pubkey: bech32ToHex(SnortPubKey), split: 0, sum: 0, } } />

{relayConnections.map(a => (

{getRelayName(a.address)}

b.pubkey === a.pubkey && b.type === ZapPoolRecipientType.Relay) ?? { type: ZapPoolRecipientType.Relay, pubkey: a.pubkey, split: 0, sum: 0, } } />
))}

{UploaderServices.map(a => (

{a.name}

b.pubkey === a.owner && b.type === ZapPoolRecipientType.FileHost) ?? { type: ZapPoolRecipientType.FileHost, pubkey: a.owner, split: 0, sum: 0, } } />
))}

{DataProviders.map(a => (

{a.name}

b.pubkey === a.owner && b.type === ZapPoolRecipientType.DataProvider) ?? { type: ZapPoolRecipientType.DataProvider, pubkey: a.owner, split: 0, sum: 0, } } />
))}
); }