@@ -4,7 +4,7 @@ import { updateActiveJurors, getDelta, updateStakedPNK, updateCourtStateVariable
44import { ensureUser } from "./User" ;
55import { ONE , ZERO } from "../utils" ;
66import { SortitionModule } from "../../generated/SortitionModule/SortitionModule" ;
7- import { updateEffectiveNumberStakedJurors , updateEffectiveStake } from "./Court" ;
7+ import { updateEffectiveStake } from "./Court" ;
88
99export function ensureJurorTokensPerCourt ( jurorAddress : string , courtID : string ) : JurorTokensPerCourt {
1010 const id = `${ jurorAddress } -${ courtID } ` ;
@@ -36,16 +36,22 @@ export function updateJurorEffectiveStake(jurorAddress: string, courtID: string,
3636 let court = Court . load ( courtID ) ;
3737 if ( ! court ) return ;
3838
39- while ( court ) {
40- const jurorTokensPerCourt = ensureJurorTokensPerCourt ( jurorAddress , court . id ) ;
41- jurorTokensPerCourt . effectiveStake = jurorTokensPerCourt . effectiveStake . plus ( delta ) ;
42- jurorTokensPerCourt . save ( ) ;
39+ const jurorTokensPerCourt = ensureJurorTokensPerCourt ( jurorAddress , court . id ) ;
40+ const previousEffectiveStake = jurorTokensPerCourt . effectiveStake ;
41+ const newEffectiveStake = previousEffectiveStake . plus ( delta ) ;
4342
44- if ( court . parent ) {
45- court = Court . load ( court . parent as string ) ;
46- } else {
47- break ;
48- }
43+ if ( previousEffectiveStake . equals ( ZERO ) && newEffectiveStake . gt ( ZERO ) ) {
44+ court . effectiveNumberStakedJurors = court . effectiveNumberStakedJurors . plus ( ONE ) ;
45+ } else if ( previousEffectiveStake . gt ( ZERO ) && newEffectiveStake . equals ( ZERO ) ) {
46+ court . effectiveNumberStakedJurors = court . effectiveNumberStakedJurors . minus ( ONE ) ;
47+ }
48+
49+ jurorTokensPerCourt . effectiveStake = newEffectiveStake ;
50+ jurorTokensPerCourt . save ( ) ;
51+ court . save ( ) ;
52+
53+ if ( court . parent ) {
54+ updateJurorEffectiveStake ( jurorAddress , court . parent as string , delta ) ;
4955 }
5056}
5157
@@ -80,7 +86,6 @@ export function updateJurorStake(
8086 court . save ( ) ;
8187 updateEffectiveStake ( courtID , stakeDelta ) ;
8288 updateJurorEffectiveStake ( jurorAddress , courtID , stakeDelta ) ;
83- updateEffectiveNumberStakedJurors ( courtID , stakedJurorsDelta ) ;
8489 updateCourtStateVariable ( courtID , court . effectiveStake , timestamp , "effectiveStake" ) ;
8590}
8691
0 commit comments