problem: can't see unratified zap amounts being distributed to meritholders

This commit is contained in:
gsovereignty
2024-07-30 13:56:48 +08:00
parent c48d725fcd
commit 0526dda61e
5 changed files with 37 additions and 5 deletions

View File

@@ -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);
}

View File

@@ -6,6 +6,8 @@
import ProductPurchases from './ProductPurchases.svelte';
export let rocket: NDKEvent;
export let unratifiedZaps = 0;
let products = new Rocket(rocket).Products()
</script>
@@ -19,7 +21,7 @@
{#each products as product (product.ID)}
<div>
<ProductCardFromId {rocket} productID={product.ID}>
<ProductPurchases {rocket} {product} />
<ProductPurchases bind:unratifiedZaps={unratifiedZaps} {rocket} {product} />
</ProductCardFromId>
</div>
{/each}

View File

@@ -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

View File

@@ -13,6 +13,8 @@
import UpdateMission from './UpdateMission.svelte';
export let rocket: NDKEvent;
$: unratifiedZaps = 0
</script>
<div class="flex flex-col sm:gap-4">
@@ -32,9 +34,9 @@
<main
class="grid flex-1 items-start gap-4 p-4 sm:px-6 sm:py-0 md:gap-2 lg:grid-cols-3 xl:grid-cols-3"
>
<MeritsAndSatflow {rocket} />
<MeritsAndSatflow {unratifiedZaps} {rocket} />
<ProductFomo {rocket} />
<ProductFomo bind:unratifiedZaps {rocket} />
<ProposedProducts {rocket} />
@@ -58,8 +60,7 @@
<Todo
text={[
'delete rocket (if current user is rocket creator)',
'modify relevant data and republish event according to https://github.com/nostrocket/NIPS/blob/main/31108.md and https://github.com/nostrocket/NIPS/blob/main/MSBR334000.md '
'delete rocket (if current user is rocket creator) - publish deletion request'
]}
/>
</main>

View File

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