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

Commit 791df3d

Browse files
authored
Use swap from_asset as primary asset_id on Sui and Aptos (#1159)
1 parent 3cf1150 commit 791df3d

2 files changed

Lines changed: 15 additions & 6 deletions

File tree

crates/gem_aptos/src/provider/transactions_mapper.rs

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -98,10 +98,11 @@ fn map_swap_transaction(transaction: Transaction, events: Vec<Event>, chain: Cha
9898
];
9999

100100
let swap = SwapMapper::map_swap(&balance_diffs, &BigUint::from(0u8), &chain.as_asset_id(), Some(SwapProvider::Panora.id().to_owned()))?;
101+
let asset_id = swap.from_asset.clone();
101102
let metadata = serde_json::to_value(&swap).ok();
102103
let to = meta.sender.clone();
103104

104-
return Some(build_transaction(meta, chain.as_asset_id(), to, swap.from_value, TransactionType::Swap, metadata));
105+
return Some(build_transaction(meta, asset_id, chain.as_asset_id(), to, swap.from_value, TransactionType::Swap, metadata));
105106
}
106107

107108
let withdraw_event = events.iter().find(|e| e.event_type == FUNGIBLE_ASSET_WITHDRAW_EVENT)?;
@@ -149,30 +150,32 @@ fn map_swap_transaction(transaction: Transaction, events: Vec<Event>, chain: Cha
149150
});
150151

151152
let swap = SwapMapper::map_swap(&balance_diffs, &BigUint::from(0u8), &chain.as_asset_id(), provider)?;
153+
let asset_id = swap.from_asset.clone();
152154
let metadata = serde_json::to_value(&swap).ok();
153155
let to = meta.sender.clone();
154156

155-
Some(build_transaction(meta, chain.as_asset_id(), to, swap.from_value, TransactionType::Swap, metadata))
157+
Some(build_transaction(meta, asset_id, chain.as_asset_id(), to, swap.from_value, TransactionType::Swap, metadata))
156158
}
157159

158160
fn build_transaction(
159161
meta: TransactionMeta,
160162
asset_id: AssetId,
163+
fee_asset_id: AssetId,
161164
to: String,
162165
value: String,
163166
transaction_type: TransactionType,
164167
metadata: Option<serde_json::Value>,
165168
) -> PrimitivesTransaction {
166169
PrimitivesTransaction::new(
167170
meta.hash,
168-
asset_id.clone(),
171+
asset_id,
169172
meta.sender,
170173
to,
171174
None,
172175
transaction_type,
173176
meta.state,
174177
meta.fee,
175-
asset_id,
178+
fee_asset_id,
176179
value,
177180
None,
178181
metadata,
@@ -196,6 +199,7 @@ pub fn map_transaction(transaction: Transaction) -> Option<PrimitivesTransaction
196199
let data: DelegationPoolAddStakeData = serde_json::from_value(event.data.clone()?).ok()?;
197200
return Some(build_transaction(
198201
meta,
202+
asset_id.clone(),
199203
asset_id,
200204
data.pool_address,
201205
data.amount_added,
@@ -207,6 +211,7 @@ pub fn map_transaction(transaction: Transaction) -> Option<PrimitivesTransaction
207211
let data: DelegationPoolUnlockStakeData = serde_json::from_value(event.data.clone()?).ok()?;
208212
return Some(build_transaction(
209213
meta,
214+
asset_id.clone(),
210215
asset_id,
211216
data.pool_address,
212217
data.amount_unlocked,
@@ -231,7 +236,7 @@ pub fn map_transaction(transaction: Transaction) -> Option<PrimitivesTransaction
231236

232237
let value = deposit_event.get_amount()?;
233238

234-
return Some(build_transaction(meta, asset_id, to, value, TransactionType::Transfer, None));
239+
return Some(build_transaction(meta, asset_id.clone(), asset_id, to, value, TransactionType::Transfer, None));
235240
}
236241
None
237242
}
@@ -315,6 +320,8 @@ mod tests {
315320
assert_eq!(tx.to, "0x4eb20e735591a85bb58921ef2e6b55c385bba10e817ffe1e02e50deb6c594aef");
316321
assert_eq!(tx.state, TransactionState::Confirmed);
317322
assert_eq!(tx.transaction_type, TransactionType::Swap);
323+
assert_eq!(tx.asset_id, AssetId::from_token(Chain::Aptos, APTOS_USDT_TOKEN_ID));
324+
assert_eq!(tx.fee_asset_id, Chain::Aptos.as_asset_id());
318325
assert_eq!(tx.fee, "142600");
319326
assert!(tx.metadata.is_some());
320327

crates/gem_sui/src/provider/transactions_mapper.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,8 +105,9 @@ fn map_transaction_type(
105105
_ => return None,
106106
};
107107
let owner = owner.clone()?;
108+
let asset_id = swap.from_asset.clone();
108109
return Some((
109-
chain.as_asset_id(),
110+
asset_id,
110111
owner.clone(),
111112
owner,
112113
TransactionType::Swap,
@@ -366,6 +367,7 @@ mod tests {
366367
.unwrap();
367368

368369
assert_eq!(swap.transaction_type, TransactionType::Swap);
370+
assert_eq!(swap.asset_id, AssetId::from_token(Chain::Sui, TOKEN_A));
369371
assert_eq!(swap.value, "200");
370372
let metadata: TransactionSwapMetadata = serde_json::from_value(swap.metadata.unwrap()).unwrap();
371373
assert_eq!(metadata.from_asset, AssetId::from_token(Chain::Sui, TOKEN_A));

0 commit comments

Comments
 (0)