Skip to content
Snippets Groups Projects
ud.rs 1006 B
Newer Older
use crate::*;

/// define universal dividends subcommands
#[derive(Clone, Default, Debug, clap::Parser)]
pub enum Subcommand {
	#[default]
	/// Claim uds
	ClaimUds,
}

/// handle ud commands
pub async fn handle_command(data: Data, command: Subcommand) -> anyhow::Result<()> {
	// build indexer because it is needed for all subcommands
	let mut data = data.build_client().await?;
	// match subcommand
	match command {
		Subcommand::ClaimUds => {
			data = data.build_keypair();
			claim_ud(data).await?;
		}
	};

	Ok(())
}

/// claim universal dividend
pub async fn claim_ud(data: Data) -> Result<(), anyhow::Error> {
	let progress = data
		.client()
		.tx()
		.sign_and_submit_then_watch(
			&runtime::tx().universal_dividend().claim_uds(),
			&PairSigner::new(data.keypair()),
			BaseExtrinsicParamsBuilder::new(),
		)
		.await?;

	let events = track_progress(progress).await?;

	if let Some(e) = events.find_first::<runtime::universal_dividend::events::UdsClaimed>()? {
		println!("{e:?}");
	}
	Ok(())