diff --git a/src/commands/certification.rs b/src/commands/certification.rs index 69a2f11eb4f81d2e21471497d0e3ae47b2b3a17b..366b85321933feff3a61bc7c552476eb5611712d 100644 --- a/src/commands/certification.rs +++ b/src/commands/certification.rs @@ -2,31 +2,17 @@ use crate::*; /// submit a certification and track progress pub async fn certify(data: &Data, receiver: u32) -> Result<(), anyhow::Error> { - let progress = data - .client() - .tx() - .sign_and_submit_then_watch( - &runtime::tx().cert().add_cert(data.idty_index(), receiver), - &PairSigner::new(data.keypair()), - BaseExtrinsicParamsBuilder::new(), - ) - .await?; - + let progress = submit_call( + data, + &runtime::tx().cert().add_cert(data.idty_index(), receiver), + ) + .await?; if data.args.no_wait { return Ok(()); } let events = track_progress(progress).await?; - // look for the expected event - let new_cert_event = events.find_first::<runtime::cert::events::NewCert>()?; - let renew_cert_event = events.find_first::<runtime::cert::events::RenewedCert>()?; - - if let Some(event) = new_cert_event { - println!("{event:?}"); - } - if let Some(event) = renew_cert_event { - println!("{event:?}"); - } - + look_event::<runtime::cert::events::NewCert>(&events)?; + look_event::<runtime::cert::events::RenewedCert>(&events)?; Ok(()) } diff --git a/src/commands/identity.rs b/src/commands/identity.rs index b361755c51e571302d7315d91686724a5bb09ba0..6c008b596a51c428fef3206fb0548577731f9ff1 100644 --- a/src/commands/identity.rs +++ b/src/commands/identity.rs @@ -283,7 +283,7 @@ pub fn generate_link_account( /// link an account to the identity pub async fn link_account(data: &Data, address: AccountId) -> Result<(), subxt::Error> { - let (_payload, signature) = generate_link_account(&data, address.clone()); + let (_payload, signature) = generate_link_account(data, address.clone()); // this is a hack, see // https://substrate.stackexchange.com/questions/10309/how-to-use-core-crypto-types-instead-of-runtime-types diff --git a/src/runtime_config.rs b/src/runtime_config.rs index f0eff326e055c05bfad520b2ab9ffe7a5209b436..509c78551328ac90d72f713fe39f868bbfeb096b 100644 --- a/src/runtime_config.rs +++ b/src/runtime_config.rs @@ -1,3 +1,4 @@ +// #[allow(clippy::enum_variant_names)] #[cfg(feature = "gdev")] #[subxt::subxt( runtime_metadata_path = "res/metadata.scale", diff --git a/src/utils.rs b/src/utils.rs index 4bfc80149e1281623d44c5f0c255c2fbd09cd89f..d3077f78708fde761f038ac5b6bcb05613dcf235 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -28,24 +28,40 @@ pub async fn submit_call_and_look_event<E: std::fmt::Debug + StaticEvent, Call: data: &Data, call: &Call, ) -> Result<(), subxt::Error> { - let progress = data - .client() + // submit call + let progress = submit_call(data, call).await?; + // if no wait, return immediately + if data.args.no_wait { + return Ok(()); + } + // collect events + let events = track_progress(progress).await?; + // print given event if there + look_event::<E>(&events) +} + +/// submit call +pub async fn submit_call<Call: TxPayload>( + data: &Data, + call: &Call, +) -> Result<TxProgress, subxt::Error> { + data.client() .tx() .sign_and_submit_then_watch( call, &PairSigner::new(data.keypair()), BaseExtrinsicParamsBuilder::new(), ) - .await?; + .await +} - if data.args.no_wait { - return Ok(()); - } - let events = track_progress(progress).await?; +/// look event +pub fn look_event<E: std::fmt::Debug + StaticEvent>( + events: &ExtrinsicEvents<Runtime>, +) -> Result<(), subxt::Error> { if let Some(e) = events.find_first::<E>()? { println!("{e:?}"); } - Ok(()) }