diff --git a/src/components/ProductPurchases.svelte b/src/components/ProductPurchases.svelte
index acd793b..24e04c2 100644
--- a/src/components/ProductPurchases.svelte
+++ b/src/components/ProductPurchases.svelte
@@ -1,12 +1,12 @@
-{#if $purchases.size > 0}
- {#each $purchases as [id, purchase], _ (id)}
+ {#each $validatedZapsNotInRocket as [id, purchase], _ (id)}
{
console.log(purchase.ZapReceipt.rawEvent());
@@ -89,4 +125,3 @@
{/each}
-{/if}
diff --git a/src/lib/event_helpers/rockets.ts b/src/lib/event_helpers/rockets.ts
index af6fc60..513464b 100644
--- a/src/lib/event_helpers/rockets.ts
+++ b/src/lib/event_helpers/rockets.ts
@@ -1,5 +1,6 @@
-import { NDKEvent, type NDKTag } from '@nostr-dev-kit/ndk';
+import { NDKEvent, NDKZap, type NDKTag } from '@nostr-dev-kit/ndk';
import { MapOfVotes, MeritRequest, Votes } from './merits';
+import { getAuthorizedZapper } from '@/helpers';
export class Rocket {
Event: NDKEvent;
@@ -337,6 +338,7 @@ export class ZapPurchase {
return false;
}
Valid(rocket: NDKEvent): boolean {
+
//todo: validate zapper pubkey is from a LSP specified in rocket
let valid = true;
if (!this.ValidAmount(rocket)) {
@@ -408,3 +410,20 @@ export function isValidUrl(string: string): boolean {
export function RocketATagFilter(rocket: NDKEvent): string {
return `31108:${rocket.pubkey}:${rocket.dTag}`;
}
+
+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(reject)
+ // let z = new NDKZap({ ndk: rocket.ndk!, zappedEvent: rocket, zappedUser: rocket.author });
+ // z.getZapEndpoint().then(x=>{
+ // console.log(x)
+ // resolve(true)
+ // }).catch(()=>{reject(false)})
+ })
+}
\ No newline at end of file
diff --git a/src/lib/helpers.ts b/src/lib/helpers.ts
index ea46464..7227511 100644
--- a/src/lib/helpers.ts
+++ b/src/lib/helpers.ts
@@ -1,4 +1,4 @@
-import type { NDKEvent } from '@nostr-dev-kit/ndk';
+import { NDKZap, type NDKEvent } from '@nostr-dev-kit/ndk';
export function getRocketURL(e: NDKEvent): string {
let ignitionID = undefined;
@@ -143,3 +143,21 @@ function convertToGitHubApiUrl(issueUrl: string): URL | null {
return null;
}
}
+
+export async function getAuthorizedZapper(rocket: NDKEvent): Promise {
+ return new Promise((resolve, reject) => {
+ let z = new NDKZap({ ndk: rocket.ndk!, zappedEvent: rocket, zappedUser: rocket.author });
+ z.getZapEndpoint()
+ .then((url) => {
+ if (url) {
+ url = url.trim().replace('/callback', '');
+ fetch(url).then((result) => {
+ result.json().then((j) => {
+ resolve(j.nostrPubkey);
+ }).catch(reject);
+ });
+ } else {(reject())}
+ })
+ .catch(reject);
+ });
+}