From 0526dda61e21d52cff77b708a18cd62a1c1eba5b Mon Sep 17 00:00:00 2001 From: gsovereignty Date: Tue, 30 Jul 2024 13:56:48 +0800 Subject: [PATCH] problem: can't see unratified zap amounts being distributed to meritholders --- src/components/MeritsAndSatflow.svelte | 11 +++++++++++ src/components/ProductFomo.svelte | 4 +++- src/components/ProductPurchases.svelte | 10 ++++++++++ src/components/RocketDashboard.svelte | 9 +++++---- src/lib/event_helpers/rockets.ts | 8 ++++++++ 5 files changed, 37 insertions(+), 5 deletions(-) diff --git a/src/components/MeritsAndSatflow.svelte b/src/components/MeritsAndSatflow.svelte index c2762bd..1aa850b 100644 --- a/src/components/MeritsAndSatflow.svelte +++ b/src/components/MeritsAndSatflow.svelte @@ -9,6 +9,7 @@ import { ndk } from '@/ndk'; export let rocket: NDKEvent; + export let unratifiedZaps:number = 0; let parsedRocket = new Rocket(rocket); let _merits: { pubkey: string; merits: number; sats: number }[] = []; @@ -27,6 +28,15 @@ m.set(amr.Pubkey, existing); } + //calculate percentage ownership of each pubkey and divide the unratified sats among them (round up to nearest sat): + let satsPerMeritPercentage = unratifiedZaps/100 + let totalMerits = parsedRocket.TotalMerits() + for (let [id, _m] of m) { + _m.sats += (((_m.merits/totalMerits)*100)*satsPerMeritPercentage) + _m.sats = Math.round(_m.sats) + m.set(id, _m) + } + let _merits: { pubkey: string; merits: number; sats: number }[] = []; for (let [pubkey, _m] of m) { _merits.push({ pubkey: pubkey, merits: _m.merits, sats: _m.sats }); @@ -34,6 +44,7 @@ if (_merits.length == 0) { _merits.push({pubkey: rocket.pubkey, merits: 1, sats: 0}) } + merits.set(_merits); } diff --git a/src/components/ProductFomo.svelte b/src/components/ProductFomo.svelte index 2552902..1dc33ba 100644 --- a/src/components/ProductFomo.svelte +++ b/src/components/ProductFomo.svelte @@ -6,6 +6,8 @@ import ProductPurchases from './ProductPurchases.svelte'; export let rocket: NDKEvent; + export let unratifiedZaps = 0; + let products = new Rocket(rocket).Products() @@ -19,7 +21,7 @@ {#each products as product (product.ID)}
- +
{/each} diff --git a/src/components/ProductPurchases.svelte b/src/components/ProductPurchases.svelte index 24e04c2..683a5bf 100644 --- a/src/components/ProductPurchases.svelte +++ b/src/components/ProductPurchases.svelte @@ -11,6 +11,8 @@ export let product: RocketProduct; export let rocket: NDKEvent; + export let unratifiedZaps:number = 0; //todo upstream bind this and parse outstanding zaps to merits and satflow component. + let zaps = $ndk.storeSubscribe( [{ '#a': [`31108:${rocket.author.pubkey}:${rocket.dTag}`], kinds: [9735] }], { @@ -78,6 +80,14 @@ return zapMap; }); + validatedZapsNotInRocket.subscribe(zaps=>{ + let total = 0 + for (let [_, z] of zaps) { + total += z.Amount + } + unratifiedZaps = total/1000 + }) + //todo: get existing purchases from rocket and render them //todo: update rocket event with confirmed zaps if we have votepower diff --git a/src/components/RocketDashboard.svelte b/src/components/RocketDashboard.svelte index 47f4471..f7b23ae 100644 --- a/src/components/RocketDashboard.svelte +++ b/src/components/RocketDashboard.svelte @@ -13,6 +13,8 @@ import UpdateMission from './UpdateMission.svelte'; export let rocket: NDKEvent; + + $: unratifiedZaps = 0
@@ -32,9 +34,9 @@
- + - + @@ -58,8 +60,7 @@
diff --git a/src/lib/event_helpers/rockets.ts b/src/lib/event_helpers/rockets.ts index 2674d67..ba2d297 100644 --- a/src/lib/event_helpers/rockets.ts +++ b/src/lib/event_helpers/rockets.ts @@ -36,6 +36,14 @@ export class Rocket { } return amr; } + TotalMerits(): number { + let total = 0 + let amr = this.ApprovedMeritRequests() + for (let [_, _amr] of amr) { + total += _amr.Merits + } + return total + } ValidateAMRProof(amrProof: NDKEvent): boolean { let result = false; if (this.VotePowerForPubkey(amrProof.pubkey) > 0 && amrProof.verifySignature(true)) {