Skip to content

Commit 2a0a9f3

Browse files
committed
chore: created resolve type
1 parent c14f906 commit 2a0a9f3

File tree

3 files changed

+31
-24
lines changed

3 files changed

+31
-24
lines changed

contracts/solana/programs/intent/src/instructions/fill.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ use crate::{
1818
order_fill::OrderFill,
1919
order_message::{MessageType, OrderMessage},
2020
swap_order::SwapOrder,
21+
misc::Resolve,
2122
},
2223
};
2324

@@ -94,8 +95,7 @@ pub fn order_fill<'info>(
9495
if order.src_nid() == order.dst_nid() {
9596
invoke_resolve(
9697
config.network_id.clone(),
97-
Some(fill),
98-
None,
98+
Resolve::Fill(fill),
9999
order,
100100
&ctx.accounts.signer,
101101
&ctx.accounts.system_program,

contracts/solana/programs/intent/src/instructions/recv_message.rs

+23-22
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,7 @@ pub fn recv_message<'info>(
3131
let order = SwapOrder::try_from(&fill.order_bytes())?;
3232
invoke_resolve(
3333
src_network.clone(),
34-
Some(fill),
35-
None,
34+
Resolve::Fill(fill),
3635
order,
3736
&ctx.accounts.signer,
3837
&ctx.accounts.system_program,
@@ -46,8 +45,7 @@ pub fn recv_message<'info>(
4645
let order = SwapOrder::try_from(&cancel.order_bytes())?;
4746
invoke_resolve(
4847
src_network.clone(),
49-
None,
50-
Some(cancel),
48+
Resolve::Cancel(cancel),
5149
order,
5250
&ctx.accounts.signer,
5351
&ctx.accounts.system_program,
@@ -61,8 +59,7 @@ pub fn recv_message<'info>(
6159

6260
pub fn invoke_resolve<'info>(
6361
src_network: String,
64-
fill: Option<OrderFill>,
65-
cancel: Option<Cancel>,
62+
resolve: Resolve,
6663
order: SwapOrder,
6764
signer: &Signer<'info>,
6865
system_program: &Program<'info, System>,
@@ -72,23 +69,27 @@ pub fn invoke_resolve<'info>(
7269
) -> Result<()> {
7370
let mut data = vec![];
7471
let mut ix_name = RESOLVE_FILL_IX;
75-
76-
if fill.is_some() {
77-
let args = ResolveFillArgs {
78-
src_network: src_network.clone(),
79-
fill: fill.unwrap(),
80-
order,
81-
};
82-
args.serialize(&mut data)?;
83-
} else {
84-
let args = ResolveCancelArgs {
85-
src_network: src_network.clone(),
86-
cancel: cancel.unwrap(),
87-
order,
88-
};
89-
args.serialize(&mut data)?;
90-
ix_name = RESOLVE_CANCEL_IX;
72+
73+
match resolve {
74+
Resolve::Fill(fill) => {
75+
let args = ResolveFillArgs {
76+
src_network: src_network.clone(),
77+
fill,
78+
order,
79+
};
80+
args.serialize(&mut data)?;
81+
},
82+
Resolve::Cancel(cancel) => {
83+
let args = ResolveCancelArgs {
84+
src_network: src_network.clone(),
85+
cancel,
86+
order,
87+
};
88+
args.serialize(&mut data)?;
89+
ix_name = RESOLVE_CANCEL_IX;
90+
},
9191
}
92+
9293
let ix_data = helpers::get_instruction_data(ix_name, data);
9394

9495
let mut account_metas: Vec<AccountMeta> = vec![

contracts/solana/programs/intent/src/types/misc.rs

+6
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,12 @@ pub const QUERY_FILL_ACCOUNTS_IX: &str = "query_fill_accounts";
1010
pub const QUERY_CANCEL_ACCOUNTS_IX: &str = "query_cancel_accounts";
1111
pub const QUERY_RECV_MESSAGE_ACCOUNTS_IX: &str = "query_recv_message_accounts";
1212

13+
#[derive(Debug, Clone)]
14+
pub enum Resolve {
15+
Fill(OrderFill),
16+
Cancel(Cancel)
17+
}
18+
1319
#[derive(Debug, Clone, AnchorSerialize, AnchorDeserialize)]
1420
pub struct ResolveFillArgs {
1521
pub src_network: String,

0 commit comments

Comments
 (0)