diff --git a/contracts/cw3-flex-multisig/src/contract.rs b/contracts/cw3-flex-multisig/src/contract.rs index 253b20f1c..51ad82a3a 100644 --- a/contracts/cw3-flex-multisig/src/contract.rs +++ b/contracts/cw3-flex-multisig/src/contract.rs @@ -770,7 +770,7 @@ mod tests { .unwrap(); // Verify contract version set properly - let version = query_contract_info(&app, flex_addr.clone()).unwrap(); + let version = query_contract_info(&app.wrap(), flex_addr.clone()).unwrap(); assert_eq!( ContractVersion { contract: CONTRACT_NAME.to_string(), diff --git a/packages/cw2/src/lib.rs b/packages/cw2/src/lib.rs index 12cb7b594..aae498609 100644 --- a/packages/cw2/src/lib.rs +++ b/packages/cw2/src/lib.rs @@ -18,7 +18,7 @@ For more information on this specification, please check out the */ use cosmwasm_schema::cw_serde; -use cosmwasm_std::{Empty, Querier, QuerierWrapper, QueryRequest, StdResult, Storage, WasmQuery}; +use cosmwasm_std::{CustomQuery, QuerierWrapper, QueryRequest, StdResult, Storage, WasmQuery}; use cw_storage_plus::Item; pub const CONTRACT: Item = Item::new("contract_info"); @@ -59,15 +59,19 @@ pub fn set_contract_version, U: Into>( /// if the other contract exists and claims to be a cw20-base contract for example. /// (Note: you usually want to require *interfaces* not *implementations* of the /// contracts you compose with, so be careful of overuse) -pub fn query_contract_info>( - querier: &Q, +pub fn query_contract_info( + querier: &QuerierWrapper, contract_addr: T, -) -> StdResult { +) -> StdResult +where + T: Into, + CQ: CustomQuery, +{ let req = QueryRequest::Wasm(WasmQuery::Raw { contract_addr: contract_addr.into(), key: CONTRACT.as_slice().into(), }); - QuerierWrapper::::new(querier).query(&req) + querier.query(&req) } #[cfg(test)] diff --git a/packages/cw20/src/helpers.rs b/packages/cw20/src/helpers.rs index f38ef3386..78f13a136 100644 --- a/packages/cw20/src/helpers.rs +++ b/packages/cw20/src/helpers.rs @@ -1,7 +1,7 @@ use cosmwasm_schema::cw_serde; use cosmwasm_std::{ - to_binary, Addr, CosmosMsg, CustomQuery, Querier, QuerierWrapper, StdResult, Uint128, WasmMsg, - WasmQuery, + to_binary, Addr, CosmosMsg, CustomQuery, QuerierWrapper, QueryRequest, StdResult, Uint128, + WasmMsg, WasmQuery, }; use crate::{ @@ -31,89 +31,75 @@ impl Cw20Contract { .into()) } + fn encode_smart_query( + &self, + msg: Cw20QueryMsg, + ) -> StdResult> { + Ok(WasmQuery::Smart { + contract_addr: self.addr().into(), + msg: to_binary(&msg)?, + } + .into()) + } + /// Get token balance for the given address - pub fn balance(&self, querier: &Q, address: T) -> StdResult + pub fn balance(&self, querier: &QuerierWrapper, address: T) -> StdResult where - Q: Querier, T: Into, CQ: CustomQuery, { - let msg = Cw20QueryMsg::Balance { + let query = self.encode_smart_query(Cw20QueryMsg::Balance { address: address.into(), - }; - let query = WasmQuery::Smart { - contract_addr: self.addr().into(), - msg: to_binary(&msg)?, - } - .into(); - let res: BalanceResponse = QuerierWrapper::::new(querier).query(&query)?; + })?; + let res: BalanceResponse = querier.query(&query)?; Ok(res.balance) } /// Get metadata from the contract. This is a good check that the address /// is a valid Cw20 contract. - pub fn meta(&self, querier: &Q) -> StdResult - where - Q: Querier, - CQ: CustomQuery, - { - let msg = Cw20QueryMsg::TokenInfo {}; - let query = WasmQuery::Smart { - contract_addr: self.addr().into(), - msg: to_binary(&msg)?, - } - .into(); - QuerierWrapper::::new(querier).query(&query) + pub fn meta( + &self, + querier: &QuerierWrapper, + ) -> StdResult { + let query = self.encode_smart_query(Cw20QueryMsg::TokenInfo {})?; + querier.query(&query) } /// Get allowance of spender to use owner's account - pub fn allowance( + pub fn allowance( &self, - querier: &Q, + querier: &QuerierWrapper, owner: T, spender: U, ) -> StdResult where - Q: Querier, T: Into, U: Into, CQ: CustomQuery, { - let msg = Cw20QueryMsg::Allowance { + let query = self.encode_smart_query(Cw20QueryMsg::Allowance { owner: owner.into(), spender: spender.into(), - }; - let query = WasmQuery::Smart { - contract_addr: self.addr().into(), - msg: to_binary(&msg)?, - } - .into(); - QuerierWrapper::::new(querier).query(&query) + })?; + querier.query(&query) } /// Find info on who can mint, and how much - pub fn minter(&self, querier: &Q) -> StdResult> - where - Q: Querier, - CQ: CustomQuery, - { - let msg = Cw20QueryMsg::Minter {}; - let query = WasmQuery::Smart { - contract_addr: self.addr().into(), - msg: to_binary(&msg)?, - } - .into(); - QuerierWrapper::::new(querier).query(&query) + pub fn minter( + &self, + querier: &QuerierWrapper, + ) -> StdResult> { + let query = self.encode_smart_query(Cw20QueryMsg::Minter {})?; + querier.query(&query) } /// returns true if the contract supports the allowance extension - pub fn has_allowance(&self, querier: &Q) -> bool { - self.allowance::<_, _, _, CQ>(querier, self.addr(), self.addr()) - .is_ok() + pub fn has_allowance(&self, querier: &QuerierWrapper) -> bool { + self.allowance(querier, self.addr(), self.addr()).is_ok() } /// returns true if the contract supports the mintable extension - pub fn is_mintable(&self, querier: &Q) -> bool { - self.minter::<_, CQ>(querier).is_ok() + pub fn is_mintable(&self, querier: &QuerierWrapper) -> bool { + self.minter(querier).is_ok() } }