mirror of
https://github.com/aljazceru/hypergolic.git
synced 2025-12-18 22:14:21 +01:00
problem: can't see unratified zap amounts being distributed to meritholders
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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)) {
|
||||
|
||||
Reference in New Issue
Block a user