From cc6189a5d97d1db226f62dbf3e7dc8fefe00ac42 Mon Sep 17 00:00:00 2001 From: Gigi Date: Fri, 17 Oct 2025 13:04:59 +0200 Subject: [PATCH] =?UTF-8?q?perf(bunker):=20fire-and-forget=20NIP-46=20publ?= =?UTF-8?q?ish=20in=20app=20wrapper=20so=20UI=20isn=E2=80=99t=20blocked=20?= =?UTF-8?q?waiting=20on=20relay=20publish;=20encryption/decryption=20resul?= =?UTF-8?q?ts=20now=20display=20immediately=20on=20/debug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.tsx | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/App.tsx b/src/App.tsx index 890f58ba..4c60c546 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -346,7 +346,14 @@ function App() { console.log('[bunker] publish via signer:', summary) try { DebugBus.info('bunker', 'publish', summary) } catch (err) { console.warn('[bunker] failed to log to DebugBus', err) } } catch (err) { console.warn('[bunker] failed to log publish summary', err) } - return originalPublish(relays, event) + // Fire-and-forget publish: trigger the publish but do not return the + // Observable/Promise to upstream to avoid their awaiting of completion. + const result = originalPublish(relays, event) + if (result && typeof (result as { subscribe?: unknown }).subscribe === 'function') { + try { (result as { subscribe: (h: { complete?: () => void; error?: (e: unknown) => void }) => unknown }).subscribe({ complete: () => {}, error: () => {} }) } catch {} + } + // If it's a Promise, simply ignore it (no await) so it resolves in the background. + return undefined as unknown as never } const originalSubscribe = (recreatedSigner as unknown as { subscriptionMethod: (relays: string[], filters: unknown[]) => unknown }).subscriptionMethod.bind(recreatedSigner) ;(recreatedSigner as unknown as { subscriptionMethod: (relays: string[], filters: unknown[]) => unknown }).subscriptionMethod = (relays: string[], filters: unknown[]) => {