diff --git a/src/commands/send.rs b/src/commands/send.rs index 4f0b3322..7bcf1947 100644 --- a/src/commands/send.rs +++ b/src/commands/send.rs @@ -84,10 +84,14 @@ pub async fn submit_unsigned_ingress( args: Vec, dry_run: bool, ) -> AnyhowResult { - let msg = crate::lib::signing::sign(&AuthInfo::NoAuth, canister_id, method_name, args)?; - let ingress = msg.message; - send( - &ingress, + let msg = crate::lib::signing::sign_ingress_with_request_status_query( + &AuthInfo::NoAuth, + canister_id, + method_name, + args, + )?; + submit_ingress_and_check_status( + &msg, &SendOpts { file_name: Default::default(), yes: false, diff --git a/src/lib/signing.rs b/src/lib/signing.rs index 31be4cc7..6ca186c9 100644 --- a/src/lib/signing.rs +++ b/src/lib/signing.rs @@ -1,8 +1,6 @@ use crate::lib::get_idl_string; -use crate::lib::{get_candid_type, get_local_candid}; use crate::lib::{AnyhowResult, AuthInfo}; use anyhow::{anyhow, Context}; -use ic_agent::agent::QueryBuilder; use ic_agent::agent::UpdateBuilder; use ic_agent::RequestId; use ic_types::principal::Principal; @@ -105,42 +103,23 @@ pub fn sign( method_name: &str, args: Vec, ) -> AnyhowResult { - let spec = get_local_candid(canister_id)?; - let method_type = get_candid_type(spec, method_name); - let is_query = match &method_type { - Some((_, f)) => f.is_query(), - _ => false, - }; - let ingress_expiry = Duration::from_secs(5 * 60); - let (content, request_id) = if is_query { - let bytes = QueryBuilder::new(&get_agent(auth)?, canister_id, method_name.to_string()) - .with_arg(args) - .expire_after(ingress_expiry) - .sign()? - .signed_query; - (hex::encode(bytes), None) - } else { - let signed_update = - UpdateBuilder::new(&get_agent(auth)?, canister_id, method_name.to_string()) - .with_arg(args) - .expire_after(ingress_expiry) - .sign()?; + let signed_update = UpdateBuilder::new(&get_agent(auth)?, canister_id, method_name.to_string()) + .with_arg(args) + .expire_after(ingress_expiry) + .sign()?; - ( - hex::encode(signed_update.signed_update), - Some(signed_update.request_id), - ) - }; + let content = hex::encode(signed_update.signed_update); + let request_id = signed_update.request_id; Ok(SignedMessageWithRequestId { message: Ingress { - call_type: if is_query { "query" } else { "update" }.to_string(), - request_id: request_id.map(|v| v.into()), + call_type: "update".to_string(), + request_id: Some(request_id.into()), content, }, - request_id, + request_id: Some(request_id), }) } diff --git a/tests/outputs/account-balance.txt b/tests/outputs/account-balance.txt index 7414f9bb..f733e141 100644 --- a/tests/outputs/account-balance.txt +++ b/tests/outputs/account-balance.txt @@ -1,6 +1,6 @@ Sending message with - Call type: query + Call type: update Sender: 2vxsx-fae Canister id: ryjl3-tyaaa-aaaaa-aaaba-cai Method name: account_balance_dfx diff --git a/tests/outputs/get-neuron-info.txt b/tests/outputs/get-neuron-info.txt index 69d34cb1..c9e197ca 100644 --- a/tests/outputs/get-neuron-info.txt +++ b/tests/outputs/get-neuron-info.txt @@ -1,6 +1,6 @@ Sending message with - Call type: query + Call type: update Sender: 2vxsx-fae Canister id: rrkah-fqaaa-aaaaa-aaaaq-cai Method name: get_neuron_info diff --git a/tests/outputs/get-proposal-info.txt b/tests/outputs/get-proposal-info.txt index 7411d027..a98fce4c 100644 --- a/tests/outputs/get-proposal-info.txt +++ b/tests/outputs/get-proposal-info.txt @@ -1,6 +1,6 @@ Sending message with - Call type: query + Call type: update Sender: 2vxsx-fae Canister id: rrkah-fqaaa-aaaaa-aaaaq-cai Method name: get_proposal_info diff --git a/tests/outputs/list-neurons-many.txt b/tests/outputs/list-neurons-many.txt index 2600b152..c1f81097 100644 --- a/tests/outputs/list-neurons-many.txt +++ b/tests/outputs/list-neurons-many.txt @@ -1,6 +1,6 @@ Sending message with - Call type: query + Call type: update Sender: fdsgv-62ihb-nbiqv-xgic5-iefsv-3cscz-tmbzv-63qd5-vh43v-dqfrt-pae Canister id: rrkah-fqaaa-aaaaa-aaaaq-cai Method name: list_neurons diff --git a/tests/outputs/list-neurons.txt b/tests/outputs/list-neurons.txt index cfdf425f..989f6358 100644 --- a/tests/outputs/list-neurons.txt +++ b/tests/outputs/list-neurons.txt @@ -1,6 +1,6 @@ Sending message with - Call type: query + Call type: update Sender: fdsgv-62ihb-nbiqv-xgic5-iefsv-3cscz-tmbzv-63qd5-vh43v-dqfrt-pae Canister id: rrkah-fqaaa-aaaaa-aaaaq-cai Method name: list_neurons diff --git a/tests/outputs/list-proposals.txt b/tests/outputs/list-proposals.txt index 1441cca1..59f7a456 100644 --- a/tests/outputs/list-proposals.txt +++ b/tests/outputs/list-proposals.txt @@ -1,6 +1,6 @@ Sending message with - Call type: query + Call type: update Sender: 2vxsx-fae Canister id: rrkah-fqaaa-aaaaa-aaaaq-cai Method name: list_proposals