Skip to content

Commit 4ca8330

Browse files
committed
Use TransferMsgBuilder in examples
1 parent 9e86d2d commit 4ca8330

File tree

2 files changed

+38
-13
lines changed

2 files changed

+38
-13
lines changed

contracts/ibc-callbacks/src/contract.rs

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use cosmwasm_std::{
2-
entry_point, to_json_binary, to_json_string, Binary, Deps, DepsMut, Empty, Env,
3-
IbcBasicResponse, IbcCallbackRequest, IbcDestinationCallbackMsg, IbcDstCallback, IbcMsg,
4-
IbcSourceCallbackMsg, IbcSrcCallback, IbcTimeout, MessageInfo, Response, StdError, StdResult,
2+
entry_point, to_json_binary, Binary, Deps, DepsMut, Empty, Env, IbcBasicResponse,
3+
IbcDestinationCallbackMsg, IbcDstCallback, IbcSourceCallbackMsg, IbcSrcCallback, IbcTimeout,
4+
MessageInfo, Response, StdError, StdResult, TransferMsgBuilder,
55
};
66

77
use crate::msg::{CallbackType, ExecuteMsg, QueryMsg};
@@ -71,16 +71,19 @@ fn execute_transfer(
7171
}
7272
};
7373

74-
let transfer_msg = IbcMsg::Transfer {
75-
to_address,
76-
timeout: IbcTimeout::with_timestamp(env.block.time.plus_seconds(timeout_seconds as u64)),
74+
let builder = TransferMsgBuilder::new(
7775
channel_id,
78-
amount: coin.clone(),
79-
memo: Some(to_json_string(&match callback_type {
80-
CallbackType::Both => IbcCallbackRequest::both(src_callback, dst_callback),
81-
CallbackType::Src => IbcCallbackRequest::source(src_callback),
82-
CallbackType::Dst => IbcCallbackRequest::destination(dst_callback),
83-
})?),
76+
to_address.clone(),
77+
coin.clone(),
78+
IbcTimeout::with_timestamp(env.block.time.plus_seconds(timeout_seconds as u64)),
79+
);
80+
let transfer_msg = match callback_type {
81+
CallbackType::Both => builder
82+
.with_src_callback(src_callback)
83+
.with_dst_callback(dst_callback)
84+
.build(),
85+
CallbackType::Src => builder.with_src_callback(src_callback).build(),
86+
CallbackType::Dst => builder.with_dst_callback(dst_callback).build(),
8487
};
8588

8689
Ok(Response::new()

packages/std/src/ibc/callbacks.rs

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,34 @@ use crate::{Addr, IbcAcknowledgement, IbcPacket, Uint64};
1515
///
1616
/// # Example
1717
///
18+
/// Using [`TransferMsgBuilder`](crate::TransferMsgBuilder):
1819
/// ```rust
1920
/// use cosmwasm_std::{
20-
/// to_json_string, Coin, IbcCallbackRequest, IbcMsg, IbcSrcCallback, IbcTimeout, Response,
21+
/// to_json_string, Coin, IbcCallbackRequest, TransferMsgBuilder, IbcSrcCallback, IbcTimeout, Response,
2122
/// Timestamp,
2223
/// };
24+
/// # use cosmwasm_std::testing::mock_env;
25+
/// # let env = mock_env();
26+
///
27+
/// let _transfer = TransferMsgBuilder::new(
28+
/// "channel-0".to_string(),
29+
/// "cosmos1example".to_string(),
30+
/// Coin::new(10u32, "ucoin"),
31+
/// Timestamp::from_seconds(12345),
32+
/// )
33+
/// .with_src_callback(IbcSrcCallback {
34+
/// address: env.contract.address,
35+
/// gas_limit: None,
36+
/// })
37+
/// .build();
38+
/// ```
2339
///
40+
/// Manual serialization:
41+
/// ```rust
42+
/// use cosmwasm_std::{
43+
/// to_json_string, Coin, IbcCallbackRequest, IbcMsg, IbcSrcCallback, IbcTimeout, Response,
44+
/// Timestamp,
45+
/// };
2446
/// # use cosmwasm_std::testing::mock_env;
2547
/// # let env = mock_env();
2648
///

0 commit comments

Comments
 (0)