diff --git a/tc-cli/src/lib.rs b/tc-cli/src/lib.rs index 462f09774..a057e567c 100644 --- a/tc-cli/src/lib.rs +++ b/tc-cli/src/lib.rs @@ -359,6 +359,7 @@ pub struct Batch { pub batch: BatchId, pub msg: GatewayMessage, pub task: TaskId, + pub tx: Option, } #[derive(Clone, Debug)] @@ -611,6 +612,7 @@ impl Tc { batch, msg: self.runtime.batch_message(batch).await?.context("invalid batch id")?, task: self.runtime.batch_task(batch).await?.context("invalid batch id")?, + tx: self.runtime.batch_tx_hash(batch).await?, }) } diff --git a/tc-cli/src/table.rs b/tc-cli/src/table.rs index 50f6fd6bf..233838dcd 100644 --- a/tc-cli/src/table.rs +++ b/tc-cli/src/table.rs @@ -239,6 +239,7 @@ impl IntoRow for Task { pub struct BatchEntry { batch: BatchId, task: TaskId, + tx: String, } impl IntoRow for Batch { @@ -248,6 +249,7 @@ impl IntoRow for Batch { Ok(BatchEntry { batch: self.batch, task: self.task, + tx: self.tx.map(|tx| hex::encode(tx)).unwrap_or_else(|| "pending".into()), }) } } diff --git a/tc-subxt/src/api/tasks.rs b/tc-subxt/src/api/tasks.rs index 0c7a07667..474f6fdd8 100644 --- a/tc-subxt/src/api/tasks.rs +++ b/tc-subxt/src/api/tasks.rs @@ -3,8 +3,8 @@ use crate::{metadata, SubxtClient}; use anyhow::Result; use futures::channel::oneshot; use time_primitives::{ - BatchId, ErrorMsg, GatewayMessage, GmpEvents, MessageId, NetworkId, PublicKey, ShardId, Task, - TaskId, TaskResult, + BatchId, ErrorMsg, GatewayMessage, GmpEvents, Hash, MessageId, NetworkId, PublicKey, ShardId, + Task, TaskId, TaskResult, }; impl SubxtClient { @@ -96,6 +96,11 @@ impl SubxtClient { Ok(self.client.storage().at_latest().await?.fetch(&storage_query).await?) } + pub async fn batch_tx_hash(&self, batch: BatchId) -> Result> { + let storage_query = metadata::storage().tasks().batch_tx_hash(batch); + Ok(self.client.storage().at_latest().await?.fetch(&storage_query).await?) + } + pub async fn message_received_task(&self, message: MessageId) -> Result> { let storage_query = metadata::storage().tasks().message_received_task_id(message); Ok(self.client.storage().at_latest().await?.fetch(&storage_query).await?)