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)) {