From 8be0c7dd3d376c18e3642996456eaab14ecbb47e Mon Sep 17 00:00:00 2001 From: Kieran Date: Wed, 5 Apr 2023 12:36:12 +0100 Subject: [PATCH] bug: ignore zapperPubkey for forward zaps --- packages/app/src/Element/Note.tsx | 5 +++-- packages/app/src/Element/Zap.tsx | 5 +++-- packages/app/src/Feed/ZapsFeed.ts | 2 +- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/packages/app/src/Element/Note.tsx b/packages/app/src/Element/Note.tsx index 486d38c7..afa950f2 100644 --- a/packages/app/src/Element/Note.tsx +++ b/packages/app/src/Element/Note.tsx @@ -114,9 +114,10 @@ export default function Note(props: NoteProps) { ); const zaps = useMemo(() => { const sortedZaps = getReactions(related, ev.id, EventKind.ZapReceipt) - .map(parseZap) - .filter(z => z.valid && z.sender !== ev.pubkey); + .map(a => parseZap(a, ev)) + .filter(z => z.valid); sortedZaps.sort((a, b) => b.amount - a.amount); + console.debug(sortedZaps); return sortedZaps; }, [related]); const totalReactions = positive.length + negative.length + reposts.length + zaps.length; diff --git a/packages/app/src/Element/Zap.tsx b/packages/app/src/Element/Zap.tsx index a320c4a1..2f5ac6cc 100644 --- a/packages/app/src/Element/Zap.tsx +++ b/packages/app/src/Element/Zap.tsx @@ -22,7 +22,7 @@ function getInvoice(zap: TaggedRawEvent): InvoiceDetails | undefined { return decodeInvoice(bolt11); } -export function parseZap(zapReceipt: TaggedRawEvent): ParsedZap { +export function parseZap(zapReceipt: TaggedRawEvent, refNote?: TaggedRawEvent): ParsedZap { let innerZapJson = findTag(zapReceipt, "description"); if (innerZapJson) { try { @@ -35,6 +35,7 @@ export function parseZap(zapReceipt: TaggedRawEvent): ParsedZap { // old format, ignored throw new Error("deprecated zap format"); } + const isForwardedZap = refNote?.tags.some(a => a[0] === "zap") ?? false; const anonZap = findTag(zapRequest, "anon"); const metaHash = sha256(innerZapJson); const ret: ParsedZap = { @@ -65,7 +66,7 @@ export function parseZap(zapReceipt: TaggedRawEvent): ParsedZap { ret.valid = false; ret.errors.push("amount tag does not match invoice amount"); } - if (UserCache.getFromCache(ret.receiver)?.zapService !== ret.zapService) { + if (UserCache.getFromCache(ret.receiver)?.zapService !== ret.zapService && !isForwardedZap) { ret.valid = false; ret.errors.push("zap service pubkey doesn't match"); } diff --git a/packages/app/src/Feed/ZapsFeed.ts b/packages/app/src/Feed/ZapsFeed.ts index 45c76c6e..38819589 100644 --- a/packages/app/src/Feed/ZapsFeed.ts +++ b/packages/app/src/Feed/ZapsFeed.ts @@ -18,7 +18,7 @@ export default function useZapsFeed(pubkey?: HexKey) { const zaps = useMemo(() => { if (zapsFeed.data) { const profileZaps = zapsFeed.data - .map(parseZap) + .map(a => parseZap(a)) .filter(z => z.valid && z.receiver === pubkey && z.sender !== pubkey && !z.event); profileZaps.sort((a, b) => b.amount - a.amount); return profileZaps;