From db001fbba574297da69114607cda9d13f55c78d9 Mon Sep 17 00:00:00 2001 From: Kieran Date: Tue, 14 Feb 2023 14:53:00 +0000 Subject: [PATCH] bug: catch invalid zap --- packages/app/src/Element/Zap.tsx | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/packages/app/src/Element/Zap.tsx b/packages/app/src/Element/Zap.tsx index 5c2e05ac..9c4810cb 100644 --- a/packages/app/src/Element/Zap.tsx +++ b/packages/app/src/Element/Zap.tsx @@ -37,16 +37,23 @@ interface Zapper { } function getZapper(zap: TaggedRawEvent, dhash: string): Zapper { - const zapRequest = findTag(zap, "description"); + let zapRequest = findTag(zap, "description"); if (zapRequest) { - const rawEvent: TaggedRawEvent = JSON.parse(zapRequest); - if (Array.isArray(rawEvent)) { - // old format, ignored - return { isValid: false }; + try { + if (zapRequest.startsWith("%")) { + zapRequest = decodeURIComponent(zapRequest); + } + const rawEvent: TaggedRawEvent = JSON.parse(zapRequest); + if (Array.isArray(rawEvent)) { + // old format, ignored + return { isValid: false }; + } + const metaHash = sha256(zapRequest); + const ev = new Event(rawEvent); + return { pubkey: ev.PubKey, isValid: dhash === metaHash }; + } catch (e) { + console.warn("Invalid zap", zapRequest); } - const metaHash = sha256(zapRequest); - const ev = new Event(rawEvent); - return { pubkey: ev.PubKey, isValid: dhash === metaHash }; } return { isValid: false }; }