mirror of
https://github.com/aljazceru/hypergolic.git
synced 2025-12-19 06:24:20 +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';
|
import { ndk } from '@/ndk';
|
||||||
|
|
||||||
export let rocket: NDKEvent;
|
export let rocket: NDKEvent;
|
||||||
|
export let unratifiedZaps:number = 0;
|
||||||
|
|
||||||
let parsedRocket = new Rocket(rocket);
|
let parsedRocket = new Rocket(rocket);
|
||||||
let _merits: { pubkey: string; merits: number; sats: number }[] = [];
|
let _merits: { pubkey: string; merits: number; sats: number }[] = [];
|
||||||
@@ -27,6 +28,15 @@
|
|||||||
m.set(amr.Pubkey, existing);
|
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 }[] = [];
|
let _merits: { pubkey: string; merits: number; sats: number }[] = [];
|
||||||
for (let [pubkey, _m] of m) {
|
for (let [pubkey, _m] of m) {
|
||||||
_merits.push({ pubkey: pubkey, merits: _m.merits, sats: _m.sats });
|
_merits.push({ pubkey: pubkey, merits: _m.merits, sats: _m.sats });
|
||||||
@@ -34,6 +44,7 @@
|
|||||||
if (_merits.length == 0) {
|
if (_merits.length == 0) {
|
||||||
_merits.push({pubkey: rocket.pubkey, merits: 1, sats: 0})
|
_merits.push({pubkey: rocket.pubkey, merits: 1, sats: 0})
|
||||||
}
|
}
|
||||||
|
|
||||||
merits.set(_merits);
|
merits.set(_merits);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,8 @@
|
|||||||
import ProductPurchases from './ProductPurchases.svelte';
|
import ProductPurchases from './ProductPurchases.svelte';
|
||||||
|
|
||||||
export let rocket: NDKEvent;
|
export let rocket: NDKEvent;
|
||||||
|
export let unratifiedZaps = 0;
|
||||||
|
|
||||||
let products = new Rocket(rocket).Products()
|
let products = new Rocket(rocket).Products()
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
@@ -19,7 +21,7 @@
|
|||||||
{#each products as product (product.ID)}
|
{#each products as product (product.ID)}
|
||||||
<div>
|
<div>
|
||||||
<ProductCardFromId {rocket} productID={product.ID}>
|
<ProductCardFromId {rocket} productID={product.ID}>
|
||||||
<ProductPurchases {rocket} {product} />
|
<ProductPurchases bind:unratifiedZaps={unratifiedZaps} {rocket} {product} />
|
||||||
</ProductCardFromId>
|
</ProductCardFromId>
|
||||||
</div>
|
</div>
|
||||||
{/each}
|
{/each}
|
||||||
|
|||||||
@@ -11,6 +11,8 @@
|
|||||||
export let product: RocketProduct;
|
export let product: RocketProduct;
|
||||||
export let rocket: NDKEvent;
|
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(
|
let zaps = $ndk.storeSubscribe(
|
||||||
[{ '#a': [`31108:${rocket.author.pubkey}:${rocket.dTag}`], kinds: [9735] }],
|
[{ '#a': [`31108:${rocket.author.pubkey}:${rocket.dTag}`], kinds: [9735] }],
|
||||||
{
|
{
|
||||||
@@ -78,6 +80,14 @@
|
|||||||
return zapMap;
|
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: get existing purchases from rocket and render them
|
||||||
|
|
||||||
//todo: update rocket event with confirmed zaps if we have votepower
|
//todo: update rocket event with confirmed zaps if we have votepower
|
||||||
|
|||||||
@@ -13,6 +13,8 @@
|
|||||||
import UpdateMission from './UpdateMission.svelte';
|
import UpdateMission from './UpdateMission.svelte';
|
||||||
|
|
||||||
export let rocket: NDKEvent;
|
export let rocket: NDKEvent;
|
||||||
|
|
||||||
|
$: unratifiedZaps = 0
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="flex flex-col sm:gap-4">
|
<div class="flex flex-col sm:gap-4">
|
||||||
@@ -32,9 +34,9 @@
|
|||||||
<main
|
<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"
|
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} />
|
<ProposedProducts {rocket} />
|
||||||
|
|
||||||
@@ -58,8 +60,7 @@
|
|||||||
|
|
||||||
<Todo
|
<Todo
|
||||||
text={[
|
text={[
|
||||||
'delete rocket (if current user is rocket creator)',
|
'delete rocket (if current user is rocket creator) - publish deletion request'
|
||||||
'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 '
|
|
||||||
]}
|
]}
|
||||||
/>
|
/>
|
||||||
</main>
|
</main>
|
||||||
|
|||||||
@@ -36,6 +36,14 @@ export class Rocket {
|
|||||||
}
|
}
|
||||||
return amr;
|
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 {
|
ValidateAMRProof(amrProof: NDKEvent): boolean {
|
||||||
let result = false;
|
let result = false;
|
||||||
if (this.VotePowerForPubkey(amrProof.pubkey) > 0 && amrProof.verifySignature(true)) {
|
if (this.VotePowerForPubkey(amrProof.pubkey) > 0 && amrProof.verifySignature(true)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user