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> { ...@@ -217,25 +217,10 @@ pub async fn claim_smith_membership(data: &Data) -> Result<(), subxt::Error> {
/// renew smith membership /// renew smith membership
pub async fn renew_smith_membership(data: &Data) -> Result<(), subxt::Error> { pub async fn renew_smith_membership(data: &Data) -> Result<(), subxt::Error> {
let progress = data submit_call_and_look_event::<
.client() runtime::smith_membership::events::MembershipRenewed,
.tx() StaticTxPayload< runtime::smith_membership::calls::RenewMembership>,
.sign_and_submit_then_watch( >(data, &runtime::tx().smith_membership().renew_membership()).await
&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 go_offline /// submit go_offline
......
...@@ -16,7 +16,8 @@ use runtime_config::*; ...@@ -16,7 +16,8 @@ use runtime_config::*;
use serde::Deserialize; use serde::Deserialize;
use sp_core::{sr25519::Pair, Pair as _}; use sp_core::{sr25519::Pair, Pair as _};
use subxt::blocks::ExtrinsicEvents; use subxt::blocks::ExtrinsicEvents;
use subxt::tx::{BaseExtrinsicParamsBuilder, PairSigner, TxStatus}; use subxt::events::StaticEvent;
use subxt::tx::{BaseExtrinsicParamsBuilder, PairSigner, TxPayload, TxStatus, StaticTxPayload};
use utils::*; use utils::*;
/// define command line arguments /// define command line arguments
......
...@@ -23,6 +23,32 @@ pub async fn track_progress( ...@@ -23,6 +23,32 @@ pub async fn track_progress(
.await .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 /// custom error type intended to provide more convenient error message to user
#[derive(Debug)] #[derive(Debug)]
pub enum GcliError { pub enum GcliError {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment