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

refac membership renewal

parent 8a835b7a
No related branches found
No related tags found
1 merge request!9add smith and membership commands
......@@ -217,25 +217,10 @@ pub async fn claim_smith_membership(data: &Data) -> Result<(), subxt::Error> {
/// renew smith membership
pub async fn renew_smith_membership(data: &Data) -> Result<(), subxt::Error> {
let progress = data
.client()
.tx()
.sign_and_submit_then_watch(
&runtime::tx().smith_membership().renew_membership(),
&PairSigner::new(data.keypair()),
BaseExtrinsicParamsBuilder::new(),
)
.await?;
if data.args.no_wait {
return Ok(());
}
let events = track_progress(progress).await?;
if let Some(e) = events.find_first::<runtime::smith_membership::events::MembershipRenewed>()? {
println!("{e:?}");
}
Ok(())
submit_call_and_look_event::<
runtime::smith_membership::events::MembershipRenewed,
StaticTxPayload< runtime::smith_membership::calls::RenewMembership>,
>(data, &runtime::tx().smith_membership().renew_membership()).await
}
/// submit go_offline
......
......@@ -16,7 +16,8 @@ use runtime_config::*;
use serde::Deserialize;
use sp_core::{sr25519::Pair, Pair as _};
use subxt::blocks::ExtrinsicEvents;
use subxt::tx::{BaseExtrinsicParamsBuilder, PairSigner, TxStatus};
use subxt::events::StaticEvent;
use subxt::tx::{BaseExtrinsicParamsBuilder, PairSigner, TxPayload, TxStatus, StaticTxPayload};
use utils::*;
/// define command line arguments
......
......@@ -23,6 +23,32 @@ pub async fn track_progress(
.await
}
/// generic extrinsic submitter
pub async fn submit_call_and_look_event<E: std::fmt::Debug + StaticEvent, Call: TxPayload>(
data: &Data,
call: &Call,
) -> Result<(), subxt::Error> {
let progress = data
.client()
.tx()
.sign_and_submit_then_watch(
call,
&PairSigner::new(data.keypair()),
BaseExtrinsicParamsBuilder::new(),
)
.await?;
if data.args.no_wait {
return Ok(());
}
let events = track_progress(progress).await?;
if let Some(e) = events.find_first::<E>()? {
println!("{e:?}");
}
Ok(())
}
/// custom error type intended to provide more convenient error message to user
#[derive(Debug)]
pub enum GcliError {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment