From 10ced110f91664e0d08a44df29f09db2513621c9 Mon Sep 17 00:00:00 2001
From: Hugo Trentesaux <hugo@trentesaux.fr>
Date: Mon, 19 Jun 2023 16:28:02 +0200
Subject: [PATCH] add smith membership claim

---
 res/metadata.scale    | Bin 131872 -> 131104 bytes
 src/commands/smith.rs |  30 +++++++++++++++++++++++++++++-
 2 files changed, 29 insertions(+), 1 deletion(-)

diff --git a/res/metadata.scale b/res/metadata.scale
index 3af1b14cabe3e2c9b3561e0ef21320d47923125d..5ca3e2273e371e7e0f42789281bf44892e42e55b 100644
GIT binary patch
delta 1902
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
G=a~UO6>FFP

delta 2496
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
N<Jawhe;Cg*0|4_rFXsRN

diff --git a/src/commands/smith.rs b/src/commands/smith.rs
index bc60a5d..da1a75b 100644
--- a/src/commands/smith.rs
+++ b/src/commands/smith.rs
@@ -14,6 +14,8 @@ pub enum Subcommand {
 	Request { endpoint: String },
 	/// Emit a smith certification
 	Cert { to: u32 },
+	/// Claim smith membership
+	Claim,
 	/// go online
 	GoOnline,
 	/// go offline
@@ -41,7 +43,10 @@ pub async fn handle_command(data: Data, command: Subcommand) -> anyhow::Result<(
 	let mut data = data.build_client().await?;
 	match command {
 		Subcommand::Request { endpoint } => {
-			dbg!(request_smith_membership(&data, endpoint).await)?;
+			request_smith_membership(&data, endpoint).await?;
+		}
+		Subcommand::Claim => {
+			claim_smith_membership(&data).await?;
 		}
 		Subcommand::GoOnline => {
 			go_online(&data).await?;
@@ -182,6 +187,29 @@ pub async fn go_online(data: &Data) -> Result<(), GcliError> {
 	Ok(())
 }
 
+/// submit go_offline
+pub async fn claim_smith_membership(data: &Data) -> Result<(), subxt::Error> {
+	let progress = data
+		.client()
+		.tx()
+		.sign_and_submit_then_watch(
+			&runtime::tx().smith_membership().claim_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::MembershipAcquired>()? {
+		println!("{e:?}");
+	}
+
+	Ok(())
+}
+
 /// submit go_offline
 pub async fn go_offline(data: &Data) -> Result<(), subxt::Error> {
 	let progress = data
-- 
GitLab