@@ -2279,21 +2279,50 @@ async fn handle_network_event(
22792279 } // end else for is_valid
22802280 }
22812281 "activate" => {
2282+ {
2283+ let mut cs = chain_state. write ( ) ;
2284+ cs. set_challenge_active ( & update. challenge_id , true ) ;
2285+ }
22822286 state_manager. apply ( |state| {
22832287 state. set_challenge_active ( & update. challenge_id , true ) ;
22842288 } ) ;
2289+ // Persist state change
2290+ if let Err ( e) =
2291+ persist_core_state_to_storage ( storage, chain_state) . await
2292+ {
2293+ warn ! ( "Failed to persist state after activate: {}" , e) ;
2294+ }
22852295 info ! ( challenge_id = %update. challenge_id, "Challenge activated" ) ;
22862296 }
22872297 "deactivate" => {
2298+ {
2299+ let mut cs = chain_state. write ( ) ;
2300+ cs. set_challenge_active ( & update. challenge_id , false ) ;
2301+ }
22882302 state_manager. apply ( |state| {
22892303 state. set_challenge_active ( & update. challenge_id , false ) ;
22902304 } ) ;
2305+ // Persist state change
2306+ if let Err ( e) =
2307+ persist_core_state_to_storage ( storage, chain_state) . await
2308+ {
2309+ warn ! ( "Failed to persist state after deactivate: {}" , e) ;
2310+ }
22912311 info ! ( challenge_id = %update. challenge_id, "Challenge deactivated" ) ;
22922312 }
22932313 "rename" => {
22942314 if let Ok ( new_name) = String :: from_utf8 ( update. data . clone ( ) ) {
2295- let mut cs = chain_state. write ( ) ;
2296- if cs. rename_challenge ( & update. challenge_id , new_name. clone ( ) ) {
2315+ let renamed = {
2316+ let mut cs = chain_state. write ( ) ;
2317+ cs. rename_challenge ( & update. challenge_id , new_name. clone ( ) )
2318+ } ;
2319+ if renamed {
2320+ // Persist state change
2321+ if let Err ( e) =
2322+ persist_core_state_to_storage ( storage, chain_state) . await
2323+ {
2324+ warn ! ( "Failed to persist state after rename: {}" , e) ;
2325+ }
22972326 info ! (
22982327 challenge_id = %update. challenge_id,
22992328 new_name = %new_name,
@@ -2312,11 +2341,19 @@ async fn handle_network_event(
23122341 match bincode:: deserialize :: < platform_core:: SudoAction > ( & update. data ) {
23132342 Ok ( action) => {
23142343 info ! ( "Applying sudo action from P2P: {:?}" , action) ;
2315- let mut cs = chain_state. write ( ) ;
2316- if let Err ( e) = cs. apply_sudo_action ( & action) {
2317- error ! ( "Failed to apply sudo action from P2P: {}" , e) ;
2318- } else {
2319- info ! ( "Sudo action applied from P2P successfully" ) ;
2344+ {
2345+ let mut cs = chain_state. write ( ) ;
2346+ if let Err ( e) = cs. apply_sudo_action ( & action) {
2347+ error ! ( "Failed to apply sudo action from P2P: {}" , e) ;
2348+ } else {
2349+ info ! ( "Sudo action applied from P2P successfully" ) ;
2350+ }
2351+ }
2352+ // Persist state change
2353+ if let Err ( e) =
2354+ persist_core_state_to_storage ( storage, chain_state) . await
2355+ {
2356+ warn ! ( "Failed to persist state after sudo action: {}" , e) ;
23202357 }
23212358 }
23222359 Err ( e) => {
0 commit comments