diff --git a/contract/src/main.rs b/contract/src/main.rs index 8d9ab635..84474201 100644 --- a/contract/src/main.rs +++ b/contract/src/main.rs @@ -2009,15 +2009,27 @@ pub extern "C" fn migrate() { .try_into() .unwrap_or_revert(); - match events_mode { - EventsMode::NoEvents => {} - EventsMode::CES => { + let current_events_mode = runtime::get_key(EVENTS_MODE) + .and_then(|_| { + utils::get_stored_value_with_user_errors::( + EVENTS_MODE, + NFTCoreError::MissingEventsMode, + NFTCoreError::InvalidEventsMode, + ) + .try_into() + .ok() + }) + .unwrap_or(EventsMode::NoEvents); + + match (current_events_mode, events_mode) { + (EventsMode::CES, EventsMode::CES) => casper_event_standard::emit(Migration::new()), + (_, EventsMode::CES) => { // Initialize events structures. utils::init_events(); - // Emit Migration event. casper_event_standard::emit(Migration::new()); } - EventsMode::CEP47 => record_cep47_event_dictionary(CEP47Event::Migrate), + (_, EventsMode::CEP47) => record_cep47_event_dictionary(CEP47Event::Migrate), + (_, _) => {} } runtime::put_key(EVENTS_MODE, storage::new_uref(events_mode as u8).into()); diff --git a/contract/src/modalities.rs b/contract/src/modalities.rs index 88e89846..a24019f9 100644 --- a/contract/src/modalities.rs +++ b/contract/src/modalities.rs @@ -423,7 +423,7 @@ impl TryFrom for NamedKeyConventionMode { } #[repr(u8)] -#[derive(PartialEq, Eq)] +#[derive(PartialEq, Eq, Clone, Copy)] #[allow(clippy::upper_case_acronyms)] pub enum EventsMode { NoEvents = 0, diff --git a/tests/src/upgrade.rs b/tests/src/upgrade.rs index c6b064a9..7272e018 100644 --- a/tests/src/upgrade.rs +++ b/tests/src/upgrade.rs @@ -1175,6 +1175,7 @@ fn should_safely_upgrade_from_1_0_0_to_1_2_0_to_current_version() { ARG_ACCESS_KEY_NAME_1_0_0 => format!("{PREFIX_ACCESS_KEY_NAME}_{NFT_TEST_COLLECTION}"), ARG_HASH_KEY_NAME_1_0_0 => format!("{PREFIX_HASH_KEY_NAME}_{NFT_TEST_COLLECTION}"), ARG_TOTAL_TOKEN_SUPPLY => 10u64, + ARG_EVENTS_MODE => EventsMode::CES as u8 }, ) .build(); @@ -1286,6 +1287,7 @@ fn should_safely_upgrade_from_1_0_0_to_1_3_0_to_current_version() { ARG_ACCESS_KEY_NAME_1_0_0 => format!("{PREFIX_ACCESS_KEY_NAME}_{NFT_TEST_COLLECTION}"), ARG_HASH_KEY_NAME_1_0_0 => format!("{PREFIX_HASH_KEY_NAME}_{NFT_TEST_COLLECTION}"), ARG_TOTAL_TOKEN_SUPPLY => 10u64, + ARG_EVENTS_MODE => EventsMode::CES as u8 }, ) .build(); @@ -1397,6 +1399,7 @@ fn should_safely_upgrade_from_1_0_0_to_1_4_0_to_current_version() { ARG_ACCESS_KEY_NAME_1_0_0 => format!("{PREFIX_ACCESS_KEY_NAME}_{NFT_TEST_COLLECTION}"), ARG_HASH_KEY_NAME_1_0_0 => format!("{PREFIX_HASH_KEY_NAME}_{NFT_TEST_COLLECTION}"), ARG_TOTAL_TOKEN_SUPPLY => 10u64, + ARG_EVENTS_MODE => EventsMode::CES as u8 }, ) .build(); @@ -1508,6 +1511,7 @@ fn should_safely_upgrade_from_1_0_0_to_1_5_0_to_current_version() { ARG_ACCESS_KEY_NAME_1_0_0 => format!("{PREFIX_ACCESS_KEY_NAME}_{NFT_TEST_COLLECTION}"), ARG_HASH_KEY_NAME_1_0_0 => format!("{PREFIX_HASH_KEY_NAME}_{NFT_TEST_COLLECTION}"), ARG_TOTAL_TOKEN_SUPPLY => 10u64, + ARG_EVENTS_MODE => EventsMode::CES as u8 }, ) .build();