From 61c92015ac35c0b4164e3aabdd29a3f59428c8d0 Mon Sep 17 00:00:00 2001 From: gsovereignty Date: Mon, 5 Aug 2024 22:52:47 +0800 Subject: [PATCH] problem: not clear when a merit auction creation request has been published --- src/lib/event_helpers/rockets.ts | 2 +- src/routes/sellmerits/+page.svelte | 72 +++++++++++++++++++++++------- 2 files changed, 56 insertions(+), 18 deletions(-) diff --git a/src/lib/event_helpers/rockets.ts b/src/lib/event_helpers/rockets.ts index af2d570..97d0279 100644 --- a/src/lib/event_helpers/rockets.ts +++ b/src/lib/event_helpers/rockets.ts @@ -419,7 +419,7 @@ export class RocketAMR { LeadTime: number; LeadTimeUpdate: number; Merits: number; - Extra: {}; + Extra: {eventAMR: AMRAuction}; SatsOwed(): number { return 0; } diff --git a/src/routes/sellmerits/+page.svelte b/src/routes/sellmerits/+page.svelte index dd1495b..09b6c3d 100644 --- a/src/routes/sellmerits/+page.svelte +++ b/src/routes/sellmerits/+page.svelte @@ -7,15 +7,21 @@ import { ndk } from '@/ndk'; import { currentUser } from '@/stores/session'; import { NDKEvent } from '@nostr-dev-kit/ndk'; - import { onDestroy } from 'svelte'; + import { onDestroy, onMount } from 'svelte'; import { derived } from 'svelte/store'; import Login from '../../components/Login.svelte'; import CreateAMRAuction from '../../components/CreateAMRAuction.svelte'; import MeritAuctions from '../../stateupdaters/MeritAuctions.svelte'; import Heading from '../../components/Heading.svelte'; + import type { NDKEventStore, ExtendedBaseType } from '@nostr-dev-kit/ndk-svelte'; let rocketEvents = $ndk.storeSubscribe([{ kinds: [31108 as number] }], { subId: 'all_rockets' }); + let amrAuctionEvents = $ndk.storeSubscribe([{ kinds: [1412 as number] }], { + subId: 'my_auctions' + }); + onDestroy(() => { rocketEvents?.unsubscribe(); + amrAuctionEvents?.unsubscribe(); }); let rockets = derived(rocketEvents, ($rocketEvents) => { @@ -33,22 +39,48 @@ return Array.from(m, ([_, e]) => new Rocket(e)); }); - let myMeritRequests = derived([currentUser, rockets], ([$currentUser, $rockets]) => { - let merits = new Map(); - if ($currentUser) { - for (let r of $rockets) { - //let parsedRocket = new Rocket(r); - let _merits: RocketAMR[] = []; - for (let [_, amr] of r.ApprovedMeritRequests()) { - if (amr.Pubkey == $currentUser.pubkey) { - _merits.push(amr); + let myAmrAuctionEvents = derived( + [currentUser, amrAuctionEvents], + ([$currentUser, $amrAuctionEvents]) => { + let events = new Map(); + if ($currentUser) { + for (let e of $amrAuctionEvents) { + if (e.pubkey == $currentUser.pubkey) { + let amr = e.tagValue('request'); + if (amr) { + events.set(amr, new AMRAuction(undefined, e, undefined)); + } } } - merits.set(r, _merits); } + return events; } - return merits; - }); + ); + + let myMeritRequests = derived( + [currentUser, rockets, myAmrAuctionEvents], + ([$currentUser, $rockets, $myAmrAuctionEvents]) => { + let merits = new Map(); + if ($currentUser) { + for (let r of $rockets) { + //let parsedRocket = new Rocket(r); + let _merits: RocketAMR[] = []; + for (let [_, amr] of r.ApprovedMeritRequests()) { + let amrAuction = $myAmrAuctionEvents.get(amr.ID); + if (amrAuction) { + amr.Extra = { eventAMR: amrAuction }; + } + if (amr.Pubkey == $currentUser.pubkey) { + _merits.push(amr); + } + } + merits.set(r, _merits); + } + } + + return merits; + } + ); let selected_amrs = new Map(); function toggleSelected(amr: RocketAMR, rocket: Rocket) { @@ -102,6 +134,7 @@ // return thisRocket // } + {#if $currentUser} @@ -121,10 +154,14 @@ - {#each rocket.PendingAMRAuctions().filter(r=>{return Boolean(r.Owner == $currentUser.pubkey)}) as p} + {#each rocket.PendingAMRAuctions().filter((r) => { + return Boolean(r.Owner == $currentUser.pubkey); + }) as p} - {p.AMRIDs.length > 1 ? 'multiple' : p.AMRIDs[0].substring(0,12)} + {p.AMRIDs.length > 1 ? 'multiple' : p.AMRIDs[0].substring(0, 12)} {p.Merits} Pending {p.RxAddress} @@ -141,6 +178,7 @@ > { @@ -157,8 +195,8 @@ > {a.Merits} - Eligible - + {a.Extra.eventAMR ? 'pending' : 'Eligible'} + {a.Extra.eventAMR?.RxAddress} {a.Merits} {/if}