@@ -198,13 +198,15 @@ pub mod pallet {
198
198
KeepAlive ,
199
199
) ?;
200
200
Self :: mint_into ( & user, amount) ?;
201
- StakerAccounts :: < T > :: insert (
202
- & user,
203
- FinanceAccount :: < BalanceOf < T > > {
204
- invest_pools : vec ! [ ] ,
205
- locked : Zero :: zero ( ) ,
206
- } ,
207
- ) ;
201
+ if !StakerAccounts :: < T > :: contains_key ( & user) {
202
+ StakerAccounts :: < T > :: insert (
203
+ & user,
204
+ FinanceAccount :: < BalanceOf < T > > {
205
+ invest_pools : vec ! [ ] ,
206
+ locked : Zero :: zero ( ) ,
207
+ } ,
208
+ ) ;
209
+ }
208
210
Self :: deposit_event ( Event :: < T > :: Wrapped { user, amount } ) ;
209
211
Ok ( ( ) )
210
212
}
@@ -340,8 +342,26 @@ pub mod pallet {
340
342
341
343
Ok ( ( ) )
342
344
}
343
- }
344
345
346
+ #[ pallet:: call_index( 5 ) ]
347
+ #[ pallet:: weight( 0 ) ]
348
+ #[ frame_support:: transactional]
349
+ pub fn backfill_vote_lock ( origin : OriginFor < T > ) -> DispatchResult {
350
+ let who = ensure_signed ( origin) ?;
351
+ base_pool:: Pallet :: < T > :: ensure_migration_root ( who) ?;
352
+ let mut iter = VoteAccountMap :: < T > :: iter ( ) ;
353
+ for ( _, account_id, ( aye_amount, nay_amount) ) in iter. by_ref ( ) {
354
+ let mut account_status = StakerAccounts :: < T > :: get ( & account_id)
355
+ . expect ( "account_status should be found when it already voted; qed." ) ;
356
+ let total_amount = aye_amount + nay_amount;
357
+ if account_status. locked < total_amount {
358
+ account_status. locked = total_amount;
359
+ StakerAccounts :: < T > :: insert ( account_id, account_status) ;
360
+ }
361
+ }
362
+ Ok ( ( ) )
363
+ }
364
+ }
345
365
impl < T : Config > Pallet < T >
346
366
where
347
367
BalanceOf < T > : sp_runtime:: traits:: AtLeast32BitUnsigned + Copy + FixedPointConvert + Display ,
0 commit comments