diff --git a/src/components/ProductPurchases.svelte b/src/components/ProductPurchases.svelte index 6f2410b..2dfa51b 100644 --- a/src/components/ProductPurchases.svelte +++ b/src/components/ProductPurchases.svelte @@ -72,7 +72,7 @@ } }) .catch((e) => { - if (e.pubkey && $currentUser && e.pubkey == $currentUser.pubkey) { + if (e && e.pubkey && $currentUser && e.pubkey == $currentUser.pubkey) { alert( 'Nostrocket could not validate that the zap receipts published on your behalf are legitimate, this usually means we could not query your lightning service provider API. Consider switching to a lightning service provider that is known to work (e.g. getAlby).' ); diff --git a/src/lib/event_helpers/rockets.ts b/src/lib/event_helpers/rockets.ts index 0d4671d..4f6ecb6 100644 --- a/src/lib/event_helpers/rockets.ts +++ b/src/lib/event_helpers/rockets.ts @@ -6,6 +6,8 @@ import { sha256 } from 'js-sha256'; import { MapOfVotes, MeritRequest, Votes } from './merits'; import * as immutable from 'immutable'; import { BloomFilter } from 'bloomfilter'; +import { zappers } from '@/stores/zappers'; +import { get } from 'svelte/store'; export class Rocket { Event: NDKEvent; @@ -739,20 +741,24 @@ export function RocketATagFilter(rocket: NDKEvent): string { export async function ValidateZapPublisher(rocket: NDKEvent, zap: NDKEvent): Promise { return new Promise((resolve, reject) => { - getAuthorizedZapper(rocket) - .then((pubkey) => { - if (pubkey == zap.pubkey) { - resolve(true); - } else { - reject(); - } - }) - .catch((e) => reject(e)); - // let z = new NDKZap({ ndk: rocket.ndk!, zappedEvent: rocket, zappedUser: rocket.author }); - // z.getZapEndpoint().then(x=>{ - // console.log(x) - // resolve(true) - // }).catch(()=>{reject(false)}) + let zapper = get(zappers).get(rocket.pubkey); + if (zapper && zapper == zap.pubkey) { + resolve(true); + } else { + getAuthorizedZapper(rocket) + .then((pubkey) => { + if (pubkey == zap.pubkey) { + zappers.update((existing) => { + existing.set(rocket.pubkey, pubkey); + return existing; + }); + resolve(true); + } else { + reject(); + } + }) + .catch((e) => reject(e)); + } }); } diff --git a/src/lib/helpers.ts b/src/lib/helpers.ts index 73f9b64..6e9ecc2 100644 --- a/src/lib/helpers.ts +++ b/src/lib/helpers.ts @@ -163,7 +163,6 @@ export async function getAuthorizedZapper(rocket: NDKEvent): Promise { z.getZapEndpoint() .then((url) => { if (url) { - console.log(url); url = url.trim().replace('/callback', ''); fetch(url).then((result) => { result diff --git a/src/lib/stores/zappers.ts b/src/lib/stores/zappers.ts new file mode 100644 index 0000000..01fe2a1 --- /dev/null +++ b/src/lib/stores/zappers.ts @@ -0,0 +1,3 @@ +import { writable } from 'svelte/store'; + +export let zappers = writable(new Map());