sg721_name/
helpers.rs

1use crate::msg::QueryMsg;
2use cosmwasm_schema::cw_serde;
3use cosmwasm_std::{to_binary, Addr, QuerierWrapper, QueryRequest, StdResult, WasmQuery};
4use sg_name::{TextRecord, NFT};
5
6/// NameCollectionContract is a wrapper around Addr that provides a lot of helpers
7#[cw_serde]
8pub struct NameCollectionContract(pub Addr);
9
10impl NameCollectionContract {
11    pub fn addr(&self) -> Addr {
12        self.0.clone()
13    }
14
15    pub fn name(&self, querier: &QuerierWrapper, address: &str) -> StdResult<String> {
16        let res: String = querier.query(&QueryRequest::Wasm(WasmQuery::Smart {
17            contract_addr: self.addr().into(),
18            msg: to_binary(&QueryMsg::Name {
19                address: address.to_string(),
20            })?,
21        }))?;
22
23        Ok(res)
24    }
25
26    pub fn image_nft(&self, querier: &QuerierWrapper, name: &str) -> StdResult<Option<NFT>> {
27        let res: Option<NFT> = querier.query(&QueryRequest::Wasm(WasmQuery::Smart {
28            contract_addr: self.addr().into(),
29            msg: to_binary(&QueryMsg::ImageNFT {
30                name: name.to_string(),
31            })?,
32        }))?;
33
34        Ok(res)
35    }
36
37    pub fn text_records(&self, querier: &QuerierWrapper, name: &str) -> StdResult<Vec<TextRecord>> {
38        let res: Vec<TextRecord> = querier.query(&QueryRequest::Wasm(WasmQuery::Smart {
39            contract_addr: self.addr().into(),
40            msg: to_binary(&QueryMsg::TextRecords {
41                name: name.to_string(),
42            })?,
43        }))?;
44
45        Ok(res)
46    }
47
48    pub fn is_twitter_verified(&self, querier: &QuerierWrapper, name: &str) -> StdResult<bool> {
49        let res: bool = querier.query(&QueryRequest::Wasm(WasmQuery::Smart {
50            contract_addr: self.addr().into(),
51            msg: to_binary(&QueryMsg::IsTwitterVerified {
52                name: name.to_string(),
53            })?,
54        }))?;
55
56        Ok(res)
57    }
58}