Skip to content
Snippets Groups Projects
Commit 0ded4217 authored by Hugo Trentesaux's avatar Hugo Trentesaux
Browse files

refac call submission and event watch

parent 94ed2f47
No related branches found
No related tags found
1 merge request!11refac call submission and event watch
......@@ -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(())
}
......@@ -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
......
// #[allow(clippy::enum_variant_names)]
#[cfg(feature = "gdev")]
#[subxt::subxt(
runtime_metadata_path = "res/metadata.scale",
......
......@@ -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(())
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment