@@ -362,8 +362,7 @@ pub mod pallet {
362362 ///
363363 /// This resets `last_proof` to the current block, thereby delaying any automatic demotion.
364364 ///
365- /// If `who` is not already tracked by this pallet, then it will become tracked.
366- /// `last_promotion` will be set to zero.
365+ /// `who` must already be tracked by this pallet for this to have an effect.
367366 ///
368367 /// - `origin`: An origin which satisfies `ApproveOrigin` or root.
369368 /// - `who`: A member (i.e. of non-zero rank).
@@ -382,11 +381,7 @@ pub mod pallet {
382381 ensure ! ( at_rank > 0 , Error :: <T , I >:: InvalidRank ) ;
383382 let rank = T :: Members :: rank_of ( & who) . ok_or ( Error :: < T , I > :: Unranked ) ?;
384383 ensure ! ( rank == at_rank, Error :: <T , I >:: UnexpectedRank ) ;
385- let mut member = if let Some ( m) = Member :: < T , I > :: get ( & who) {
386- m
387- } else {
388- Self :: import_member ( who. clone ( ) , rank)
389- } ;
384+ let mut member = Member :: < T , I > :: get ( & who) . ok_or ( Error :: < T , I > :: NotTracked ) ?;
390385
391386 member. last_proof = frame_system:: Pallet :: < T > :: block_number ( ) ;
392387 Member :: < T , I > :: insert ( & who, & member) ;
@@ -522,7 +517,13 @@ pub mod pallet {
522517 let who = ensure_signed ( origin) ?;
523518 ensure ! ( !Member :: <T , I >:: contains_key( & who) , Error :: <T , I >:: AlreadyInducted ) ;
524519 let rank = T :: Members :: rank_of ( & who) . ok_or ( Error :: < T , I > :: Unranked ) ?;
525- let _ = Self :: import_member ( who, rank) ;
520+
521+ let now = frame_system:: Pallet :: < T > :: block_number ( ) ;
522+ Member :: < T , I > :: insert (
523+ & who,
524+ MemberStatus { is_active : true , last_promotion : 0u32 . into ( ) , last_proof : now } ,
525+ ) ;
526+ Self :: deposit_event ( Event :: < T , I > :: Imported { who, rank } ) ;
526527
527528 Ok ( Pays :: No . into ( ) )
528529 }
@@ -546,18 +547,6 @@ pub mod pallet {
546547 Self :: deposit_event ( e) ;
547548 }
548549 }
549-
550- fn import_member ( who : T :: AccountId , rank : RankOf < T , I > ) -> MemberStatusOf < T > {
551- let now = frame_system:: Pallet :: < T > :: block_number ( ) ;
552- let status = MemberStatus {
553- is_active : true ,
554- last_promotion : BlockNumberFor :: < T > :: zero ( ) ,
555- last_proof : now,
556- } ;
557- Member :: < T , I > :: insert ( & who, status. clone ( ) ) ;
558- Self :: deposit_event ( Event :: < T , I > :: Imported { who, rank } ) ;
559- status
560- }
561550 }
562551
563552 impl < T : Config < I > , I : ' static > GetSalary < RankOf < T , I > , T :: AccountId , T :: Balance > for Pallet < T , I > {
0 commit comments