From b2027c2c7b9da8ba9b61e9917b9df65a7b59f421 Mon Sep 17 00:00:00 2001
From: Hugo Trentesaux <hugo@trentesaux.fr>
Date: Wed, 17 Jan 2024 11:58:07 +0100
Subject: [PATCH] listen promoted to smith event

---
 README.md             |  8 ++++++++
 src/commands/smith.rs | 25 ++++++++++++++++++++-----
 src/display.rs        |  5 +++++
 3 files changed, 33 insertions(+), 5 deletions(-)

diff --git a/README.md b/README.md
index 38eb3a8..742ffb1 100644
--- a/README.md
+++ b/README.md
@@ -73,4 +73,12 @@ Secret key format can be changed using `--secret-format` with the following valu
 - [x] add link/unlink account commands
 - [ ] migrate all xt to submit_call_and_look_event
 - [ ] add transfer with unit (ÄžD, UD...)
+- [ ] add more runtime-info like cert count, sudo key...
+- [ ] add more info on identity view like status, number certs emitted, received
+- [ ] implement squid indexer to get cert list + tx history...
+- [ ] 
+- [ ] 
+- [ ] 
+- [ ] 
+- [ ] 
 - [ ] 
\ No newline at end of file
diff --git a/src/commands/smith.rs b/src/commands/smith.rs
index 6077cbd..682474c 100644
--- a/src/commands/smith.rs
+++ b/src/commands/smith.rs
@@ -289,9 +289,24 @@ pub async fn accept_invitation(data: &Data) -> Result<(), subxt::Error> {
 
 /// invite identity to join smith
 pub async fn certify_smith(data: &Data, target: IdtyId) -> Result<(), subxt::Error> {
-	submit_call_and_look_event::<
-		runtime::smith_members::events::CertificationReceived,
-		Payload<runtime::smith_members::calls::types::CertifySmith>,
-	>(data, &runtime::tx().smith_members().certify_smith(target))
-	.await
+	// submit_call_and_look_event::<
+	// 	runtime::smith_members::events::CertificationReceived,
+	// 	Payload<runtime::smith_members::calls::types::CertifySmith>,
+	// >(data, &runtime::tx().smith_members().certify_smith(target))
+	// .await
+	let progress = submit_call(
+		data,
+		&runtime::tx()
+			.smith_members()
+			.certify_smith(target),
+	)
+	.await?;
+	if data.args.no_wait {
+		return Ok(());
+	}
+	let events = track_progress(progress).await?;
+	// look for the expected event
+	look_event::<runtime::smith_members::events::CertificationReceived>(data, &events)?;
+	look_event::<runtime::smith_members::events::PromotedToSmith>(data, &events)?;
+	Ok(())
 }
diff --git a/src/display.rs b/src/display.rs
index d00036a..cad12ec 100644
--- a/src/display.rs
+++ b/src/display.rs
@@ -75,6 +75,11 @@ impl DisplayEvent for runtime::smith_members::events::CertificationReceived {
 		format!("new smith certification {:?}", self)
 	}
 }
+impl DisplayEvent for runtime::smith_members::events::PromotedToSmith {
+	fn display(&self, _data: &Data) -> String {
+		format!("new smith promoted {:?}", self)
+	}
+}
 impl DisplayEvent for runtime::identity::events::IdtyRemoved {
 	fn display(&self, _data: &Data) -> String {
 		format!("identity removed {:?}", self)
-- 
GitLab