From de7c8df18fdacf1aeca065fb9a07c8a85c4a357e Mon Sep 17 00:00:00 2001
From: highperfocused
Date: Mon, 21 Apr 2025 13:49:18 +0200
Subject: [PATCH] fix: rm encodeURIComponent
---
components/ZapButton.tsx | 74 +++++++++++++++++++++++++++++++++++++---
1 file changed, 70 insertions(+), 4 deletions(-)
diff --git a/components/ZapButton.tsx b/components/ZapButton.tsx
index 8a824b0..e24c20a 100644
--- a/components/ZapButton.tsx
+++ b/components/ZapButton.tsx
@@ -210,7 +210,7 @@ export default function ZapButton({ event }: { event: any }) {
};
const signedZapRequest = await signEvent();
- params.append('nostr', encodeURIComponent(JSON.stringify(signedZapRequest)));
+ params.append('nostr', JSON.stringify(signedZapRequest));
if (userData?.lud06) {
params.append('lnurl', userData.lud06);
@@ -273,6 +273,58 @@ export default function ZapButton({ event }: { event: any }) {
setIsProcessing(false);
};
+ const checkPaymentStatus = async () => {
+ setIsProcessing(true);
+ try {
+ // Force a re-fetch of zap receipt events
+ const eventFilter = {
+ '#e': [event.id],
+ kinds: [9735],
+ };
+
+ // Manually check relays for new zap events
+ const zapPromises = connectedRelays.map(async (relay) => {
+ return new Promise(async (resolve) => {
+ const timeout = setTimeout(() => resolve([]), 3000); // 3 second timeout
+ try {
+ const sub = relay.sub([eventFilter]);
+ const events: any[] = [];
+
+ sub.on('event', (event) => {
+ // Check if this event contains the current invoice
+ const hasBolt11 = event.tags.some(tag =>
+ tag[0] === 'bolt11' && invoice.includes(tag[1].substring(0, 50))
+ );
+ if (hasBolt11) {
+ events.push(event);
+ }
+ });
+
+ sub.on('eose', () => {
+ clearTimeout(timeout);
+ resolve(events);
+ sub.unsub();
+ });
+ } catch (error) {
+ clearTimeout(timeout);
+ resolve([]);
+ }
+ });
+ });
+
+ const zapEventsArrays = await Promise.all(zapPromises);
+ const newZapEvents = zapEventsArrays.flat();
+
+ if (newZapEvents.length > 0) {
+ setPaymentComplete(true);
+ }
+ } catch (error) {
+ console.error("Error checking payment status:", error);
+ } finally {
+ setIsProcessing(false);
+ }
+ };
+
return (
open ? handleOpenDrawer() : handleCloseDrawer()}>
@@ -312,6 +364,9 @@ export default function ZapButton({ event }: { event: any }) {
: "Scan this QR code with a Lightning wallet to pay the invoice"}
+
+ {invoice}
+
{paymentComplete ? (
@@ -319,9 +374,20 @@ export default function ZapButton({ event }: { event: any }) {
Zap sent successfully!
) : (
-
- {invoice}
-
+
)}