Skip to content
This repository was archived by the owner on Jun 1, 2026. It is now read-only.

Commit 1d8ada9

Browse files
committed
Improve in transit handling
1 parent 8e56d5d commit 1d8ada9

29 files changed

Lines changed: 294 additions & 79 deletions

File tree

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

apps/api/src/devices/mod.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,19 @@ pub async fn get_device_transaction_by_id_v2(
8686
id: TransactionIdParam,
8787
client: &State<Mutex<TransactionsClient>>,
8888
) -> Result<ApiResponse<Transaction>, ApiError> {
89+
get_device_transaction(id, client).await
90+
}
91+
92+
#[get("/devices/transaction/<id>")]
93+
pub async fn get_device_transaction_v2(
94+
_device: AuthenticatedDevice,
95+
id: TransactionIdParam,
96+
client: &State<Mutex<TransactionsClient>>,
97+
) -> Result<ApiResponse<Transaction>, ApiError> {
98+
get_device_transaction(id, client).await
99+
}
100+
101+
async fn get_device_transaction(id: TransactionIdParam, client: &State<Mutex<TransactionsClient>>) -> Result<ApiResponse<Transaction>, ApiError> {
89102
Ok(client.lock().await.get_transaction_by_id(&id.0)?.into())
90103
}
91104

apps/api/src/main.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@ fn mount_routes(rocket: Rocket<Build>, admin_enabled: bool) -> Rocket<Build> {
121121
devices::get_device_assets_v2,
122122
devices::get_device_wallet_configuration_v2,
123123
devices::get_device_name_resolve_v2,
124+
devices::get_device_transaction_v2,
124125
devices::get_device_transaction_by_id_v2,
125126
devices::get_device_transactions_v2,
126127
devices::get_device_address_names_v2,

crates/gem_bitcoin/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ rpc = ["dep:chain_traits", "dep:gem_client"]
1010
signer = ["dep:signer", "dep:gem_hash", "dep:hex"]
1111
reqwest = ["gem_client/reqwest"]
1212
unit_tests = ["signer"]
13-
chain_integration_tests = ["rpc", "reqwest", "settings/testkit"]
13+
chain_integration_tests = ["rpc", "reqwest", "primitives/testkit", "settings/testkit"]
1414

1515
[dependencies]
1616
serde = { workspace = true, features = ["derive"] }

crates/gem_bitcoin/src/provider/transactions.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ mod chain_integration_tests {
6060
async fn test_bitcoin_get_transactions_status() {
6161
let bitcoin_client = create_bitcoin_test_client();
6262

63-
let request = TransactionStateRequest::new_id(TEST_TRANSACTION_ID.to_string());
63+
let request = TransactionStateRequest::mock_with_id(TEST_TRANSACTION_ID);
6464
let update = bitcoin_client.get_transaction_status(request).await.unwrap();
6565

6666
println!("State: {:?}", update.state);

crates/gem_evm/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ default = []
88
rpc = ["dep:async-trait", "dep:chain_traits"]
99
reqwest = ["gem_jsonrpc/reqwest", "gem_client/reqwest", "dep:reqwest"]
1010
signer = ["dep:alloy-signer-local", "dep:alloy-network", "dep:alloy-consensus"]
11-
chain_integration_tests = ["rpc", "reqwest", "settings/testkit"]
11+
chain_integration_tests = ["rpc", "reqwest", "primitives/testkit", "settings/testkit"]
1212
testkit = []
1313

1414
[dependencies]

crates/gem_evm/src/provider/transaction_state.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ mod chain_integration_tests {
2828
#[tokio::test]
2929
async fn test_ethereum_get_transaction_status_confirmed() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
3030
let client = create_ethereum_test_client();
31-
let request = TransactionStateRequest::new_id("0x98dd4d9a586620f84e8066f1b015d663f9c0c94c4e0e02377840c3e6d43e2ad3".to_string());
31+
let request = TransactionStateRequest::mock_with_id("0x98dd4d9a586620f84e8066f1b015d663f9c0c94c4e0e02377840c3e6d43e2ad3");
3232

3333
let result = client.get_transaction_status(request).await?;
3434

@@ -47,7 +47,7 @@ mod chain_integration_tests {
4747
#[tokio::test]
4848
async fn test_smartchain_get_transaction_status_confirmed() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
4949
let client = create_smartchain_test_client();
50-
let request = TransactionStateRequest::new_id("0xd85c4496230adf8a7c0fc1e98713127fb31a0f8f72874acea443e2f615f3c1b6".to_string());
50+
let request = TransactionStateRequest::mock_with_id("0xd85c4496230adf8a7c0fc1e98713127fb31a0f8f72874acea443e2f615f3c1b6");
5151

5252
let result = client.get_transaction_status(request).await?;
5353

crates/gem_hypercore/src/provider/transaction_state.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ impl<C: Client> HyperCoreClient<C> {
2020

2121
match id {
2222
HyperCoreTransactionId::Order(oid) => {
23-
let start_time = request.created_at - 5_000;
23+
let start_time = request.created_at.timestamp_millis() - 5_000;
2424
let fills = self.get_user_fills_by_time(&request.sender_address, start_time).await?;
2525
Ok(transaction_state_mapper::map_transaction_state_order(fills, oid, request.id))
2626
}

crates/gem_polkadot/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ rpc = [
1313
"dep:chain_traits",
1414
]
1515
reqwest = ["gem_client/reqwest"]
16-
chain_integration_tests = ["rpc", "reqwest", "settings/testkit"]
16+
chain_integration_tests = ["rpc", "reqwest", "primitives/testkit", "settings/testkit"]
1717

1818
[dependencies]
1919
primitives = { path = "../primitives" }

crates/gem_polkadot/src/provider/transaction_state.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@ use crate::{provider::transaction_state_mapper::map_transaction_status, rpc::cli
1111
impl<C: Client> ChainTransactionState for PolkadotClient<C> {
1212
async fn get_transaction_status(&self, request: TransactionStateRequest) -> Result<TransactionUpdate, Box<dyn Error + Sync + Send>> {
1313
let block_number = request.block_number;
14-
if block_number <= 0 {
14+
if block_number == 0 {
1515
return Err("Invalid block number".into());
1616
}
1717

1818
let block_head = self.get_block_head().await?;
19-
let from_block = block_number as u64;
19+
let from_block = block_number;
2020
let to_block = calculate_to_block(block_head.number, from_block);
2121

2222
let blocks = self.get_blocks(&from_block.to_string(), &to_block.to_string()).await?;

0 commit comments

Comments
 (0)