From bca05c5b78e9c5996b0d146bff398958d9d1c16b Mon Sep 17 00:00:00 2001
From: Apisit Ritreungroj <38898766+apskhem@users.noreply.github.com>
Date: Fri, 17 May 2024 11:18:20 +0700
Subject: [PATCH] fix(wallet-tester): missing configurable aux hash and network
ID (#500)
* fix: aux hash
* fix: filter pollution
* chore: fmt
* feat: enable network ID
* fix: note typo
* fix: typo
---
.../src/common/components/TxBuilder.tsx | 7 ++++---
.../src/common/helpers/buildUnsignedTx.ts | 19 ++++++++++++-------
.../src/common/helpers/getCardano.ts | 7 ++++++-
3 files changed, 22 insertions(+), 11 deletions(-)
diff --git a/utilities/wallet-tester/src/common/components/TxBuilder.tsx b/utilities/wallet-tester/src/common/components/TxBuilder.tsx
index 3f06a0d9f7..fe29b8f31b 100644
--- a/utilities/wallet-tester/src/common/components/TxBuilder.tsx
+++ b/utilities/wallet-tester/src/common/components/TxBuilder.tsx
@@ -354,9 +354,10 @@ function TxBuilder({ utxos, addresses, onSubmit: onPropSubmit = noop }: Props) {
onRemoveClick={() => resetField("networkId")}
render={() => (
diff --git a/utilities/wallet-tester/src/common/helpers/buildUnsignedTx.ts b/utilities/wallet-tester/src/common/helpers/buildUnsignedTx.ts
index 4c12ef8e3d..59f981467b 100644
--- a/utilities/wallet-tester/src/common/helpers/buildUnsignedTx.ts
+++ b/utilities/wallet-tester/src/common/helpers/buildUnsignedTx.ts
@@ -11,6 +11,7 @@ import {
GeneralTransactionMetadata,
Int,
LinearFee,
+ NetworkId,
RewardAddress,
StakeCredential,
StakeDelegation,
@@ -148,7 +149,7 @@ export default async function buildUnsignedTx(
// #7 add auxiliary data hash
if (builder.auxiliaryDataHash) {
- // auto generated
+ // note: the hash will be set after building auxillary data
}
// #8 add validity interval start
@@ -171,11 +172,6 @@ export default async function buildUnsignedTx(
txBuilder.add_required_signer(Ed25519KeyHash.from_hex(stakeCred));
}
- // #15 add network id
- if (builder.networkId) {
- // auto generated
- }
-
// aux data
const auxMetadata = AuxiliaryData.new();
const txMetadata = GeneralTransactionMetadata.new();
@@ -212,6 +208,7 @@ export default async function buildUnsignedTx(
if (txMetadata.len()) {
auxMetadata.set_metadata(txMetadata);
+ txBuilder.set_auxiliary_data(auxMetadata);
}
// generate fee incase too much ADA provided for fee
@@ -221,7 +218,15 @@ export default async function buildUnsignedTx(
}
// build a full transaction, passing in empty witness set
- const unsignedTx = Transaction.new(txBuilder.build(), TransactionWitnessSet.new(), auxMetadata);
+ const txBody = txBuilder.build();
+
+ // #15 add network id
+ if (builder.networkId && [0, 1].includes(Number(builder.networkId))) {
+ const networkId = Number(builder.networkId) === 0 ? NetworkId.testnet() : NetworkId.mainnet()
+ txBody.set_network_id(networkId);
+ }
+
+ const unsignedTx = Transaction.new(txBody, TransactionWitnessSet.new(), auxMetadata);
return unsignedTx;
}
diff --git a/utilities/wallet-tester/src/common/helpers/getCardano.ts b/utilities/wallet-tester/src/common/helpers/getCardano.ts
index 68f491b6b4..b6e326b551 100644
--- a/utilities/wallet-tester/src/common/helpers/getCardano.ts
+++ b/utilities/wallet-tester/src/common/helpers/getCardano.ts
@@ -1,9 +1,14 @@
+import { pickBy } from "lodash-es";
import type { WalletCollections } from "types/cardano";
export default function getCardano(
walletName?: T
): T extends string ? WalletCollections[string] : WalletCollections {
- return (walletName ? globalThis.cardano[walletName] : globalThis.cardano) as T extends string
+ return (walletName ? globalThis.cardano[walletName] : filterPolluteObjects(globalThis.cardano)) as T extends string
? WalletCollections[string]
: WalletCollections;
}
+
+function filterPolluteObjects(cardano: any): WalletCollections {
+ return pickBy(cardano, (v) => typeof v === "object" && "enable" in v)
+}