From 01bcbec902b4bf95b3554c60d6e1f699755a20a5 Mon Sep 17 00:00:00 2001 From: byteZorvin Date: Fri, 13 Sep 2024 20:03:18 +0530 Subject: [PATCH] create reusable function --- src/bridge/tests/messaging_test.cairo | 20 ------------------ src/bridge/token_bridge.cairo | 29 +++++++++++++-------------- 2 files changed, 14 insertions(+), 35 deletions(-) diff --git a/src/bridge/tests/messaging_test.cairo b/src/bridge/tests/messaging_test.cairo index 941c57d..6c64180 100644 --- a/src/bridge/tests/messaging_test.cairo +++ b/src/bridge/tests/messaging_test.cairo @@ -22,26 +22,6 @@ fn deploy_message_payload_ok() { let usdc_address = deploy_erc20("USDC", "USDC"); let calldata = TokenBridge::deployment_message_payload(usdc_address); - // With byteArray - // [ - // 1395567803262486866641834792347783460559299057717595230314827200011451862040, - // 0, - // 1431520323, - // 4, - // 0, - // 1431520323, - // 4, - // 18 - // ] - // - // With syscall direct serialisation - // [ - // 1395567803262486866641834792347783460559299057717595230314827200011451862040, - // 3, 0, 1431520323, 4, - // 3, 0, 1431520323, 4, - // 18 - // ] - let expected_calldata: Span = array![ 1395567803262486866641834792347783460559299057717595230314827200011451862040, // usdc_address 0, diff --git a/src/bridge/token_bridge.cairo b/src/bridge/token_bridge.cairo index 6dba2b0..11a45c9 100644 --- a/src/bridge/token_bridge.cairo +++ b/src/bridge/token_bridge.cairo @@ -395,6 +395,18 @@ pub mod TokenBridge { return payload.span(); } + fn deserialize_and_append( + mut value: Span, mut calldata: Array + ) -> Array { + if (value.len() == 1) { + let value_byte_array = value[0].format_as_byte_array(10); + value_byte_array.serialize(ref calldata); + } else { + let value_byte_array = Serde::::deserialize(ref value).unwrap(); + value_byte_array.serialize(ref calldata); + } + calldata + } pub fn deployment_message_payload(token: ContractAddress) -> Span { // Create the calldata that will be sent to on_receive. l2_token, amount and @@ -412,25 +424,12 @@ pub mod TokenBridge { let name_selector = selector!("name"); let mut name = call_contract_syscall(token, name_selector, array![].span()) .unwrap_syscall(); - if (name.len() == 1) { - let name_deserialised = name[0].format_as_byte_array(10); - name_deserialised.serialize(ref calldata); - } else { - let name_deserialised = Serde::::deserialize(ref name).unwrap(); - name_deserialised.serialize(ref calldata); - } + calldata = deserialize_and_append(name, calldata); let symbol_selector = selector!("symbol"); let mut symbol = call_contract_syscall(token, symbol_selector, array![].span()) .unwrap_syscall(); - - if (symbol.len() == 1) { - let symbol_deserialised = symbol[0].format_as_byte_array(10); - symbol_deserialised.serialize(ref calldata); - } else { - let symbol_deserialised = Serde::::deserialize(ref symbol).unwrap(); - symbol_deserialised.serialize(ref calldata); - } + calldata = deserialize_and_append(symbol, calldata); dispatcher.decimals().serialize(ref calldata); calldata.span()