@@ -4,7 +4,7 @@ import { updateActiveJurors, getDelta, updateStakedPNK, updateCourtStateVariable
4
4
import { ensureUser } from "./User" ;
5
5
import { ONE , ZERO } from "../utils" ;
6
6
import { SortitionModule } from "../../generated/SortitionModule/SortitionModule" ;
7
- import { updateEffectiveNumberStakedJurors , updateEffectiveStake } from "./Court" ;
7
+ import { updateEffectiveStake } from "./Court" ;
8
8
9
9
export function ensureJurorTokensPerCourt ( jurorAddress : string , courtID : string ) : JurorTokensPerCourt {
10
10
const id = `${ jurorAddress } -${ courtID } ` ;
@@ -36,16 +36,22 @@ export function updateJurorEffectiveStake(jurorAddress: string, courtID: string,
36
36
let court = Court . load ( courtID ) ;
37
37
if ( ! court ) return ;
38
38
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 ) ;
43
42
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 ) ;
49
55
}
50
56
}
51
57
@@ -80,7 +86,6 @@ export function updateJurorStake(
80
86
court . save ( ) ;
81
87
updateEffectiveStake ( courtID , stakeDelta ) ;
82
88
updateJurorEffectiveStake ( jurorAddress , courtID , stakeDelta ) ;
83
- updateEffectiveNumberStakedJurors ( courtID , stakedJurorsDelta ) ;
84
89
updateCourtStateVariable ( courtID , court . effectiveStake , timestamp , "effectiveStake" ) ;
85
90
}
86
91
0 commit comments