@@ -427,7 +427,7 @@ pub mod pallet {
427
427
Self :: create_account ( public_key, |_| -> DispatchResult { Ok ( ( ) ) } ) ?;
428
428
429
429
let event = Event :: MsaCreated { msa_id : new_msa_id, key : new_public_key } ;
430
- offchain_index_event :: < T > ( & event, new_msa_id) ;
430
+ offchain_index_event :: < T > ( Some ( & event) , new_msa_id) ;
431
431
Self :: deposit_event ( event) ;
432
432
Ok ( ( ) )
433
433
}
@@ -496,7 +496,7 @@ pub mod pallet {
496
496
497
497
let event =
498
498
Event :: MsaCreated { msa_id : new_delegator_msa_id, key : new_delegator_public_key } ;
499
- offchain_index_event :: < T > ( & event, new_delegator_msa_id) ;
499
+ offchain_index_event :: < T > ( Some ( & event) , new_delegator_msa_id) ;
500
500
Self :: deposit_event ( event) ;
501
501
Self :: deposit_event ( Event :: DelegationGranted {
502
502
delegator_id : DelegatorId ( new_delegator_msa_id) ,
@@ -688,7 +688,7 @@ pub mod pallet {
688
688
msa_id,
689
689
key : add_key_payload. new_public_key . clone ( ) ,
690
690
} ;
691
- offchain_index_event :: < T > ( & event, msa_id) ;
691
+ offchain_index_event :: < T > ( Some ( & event) , msa_id) ;
692
692
Self :: deposit_event ( event) ;
693
693
Ok ( ( ) )
694
694
} ,
@@ -725,7 +725,7 @@ pub mod pallet {
725
725
726
726
// Deposit the event
727
727
let event = Event :: PublicKeyDeleted { key : public_key_to_delete } ;
728
- offchain_index_event :: < T > ( & event, who_msa_id) ;
728
+ offchain_index_event :: < T > ( Some ( & event) , who_msa_id) ;
729
729
Self :: deposit_event ( event) ;
730
730
} ,
731
731
None => {
@@ -811,7 +811,7 @@ pub mod pallet {
811
811
Some ( msa_id) => {
812
812
Self :: delete_key_for_msa ( msa_id, & who) ?;
813
813
let event = Event :: PublicKeyDeleted { key : who } ;
814
- offchain_index_event :: < T > ( & event, msa_id) ;
814
+ offchain_index_event :: < T > ( Some ( & event) , msa_id) ;
815
815
Self :: deposit_event ( event) ;
816
816
Self :: deposit_event ( Event :: MsaRetired { msa_id } ) ;
817
817
} ,
@@ -877,6 +877,35 @@ pub mod pallet {
877
877
} ) ;
878
878
Ok ( ( ) )
879
879
}
880
+
881
+ /// A generic endpoint to replay any offchain related event to fix any potential issues
882
+ #[ pallet:: call_index( 13 ) ]
883
+ #[ pallet:: weight( T :: WeightInfo :: reindex_offchain( ) ) ]
884
+ pub fn reindex_offchain (
885
+ origin : OriginFor < T > ,
886
+ event : OffchainReplayEvent < T > ,
887
+ ) -> DispatchResult {
888
+ let _ = ensure_signed ( origin) ?;
889
+ match event {
890
+ OffchainReplayEvent :: MsaPallet ( MsaOffchainReplayEvent :: KeyReIndex {
891
+ msa_id,
892
+ index_key,
893
+ } ) => {
894
+ // don't need to check existence of msa_id since it would get checked on offchain side
895
+ match index_key {
896
+ Some ( key) => {
897
+ let event = Event :: PublicKeyAdded { msa_id, key } ;
898
+ offchain_index_event :: < T > ( Some ( & event) , msa_id) ;
899
+ } ,
900
+ None => {
901
+ offchain_index_event :: < T > ( None , msa_id) ;
902
+ } ,
903
+ }
904
+ } ,
905
+ }
906
+
907
+ Ok ( ( ) )
908
+ }
880
909
}
881
910
}
882
911
0 commit comments