diff --git a/libs/coin-modules/coin-module-boilerplate/src/bridge/index.ts b/libs/coin-modules/coin-module-boilerplate/src/bridge/index.ts index b5e53c218a52..f95ae560323f 100644 --- a/libs/coin-modules/coin-module-boilerplate/src/bridge/index.ts +++ b/libs/coin-modules/coin-module-boilerplate/src/bridge/index.ts @@ -1,6 +1,5 @@ import getAddressWrapper from "@ledgerhq/coin-framework/bridge/getAddressWrapper"; import { - defaultUpdateTransaction, makeAccountBridgeReceive, makeScanAccounts, makeSync, @@ -19,6 +18,7 @@ import { getTransactionStatus } from "./getTransactionStatus"; import { prepareTransaction } from "./prepareTransaction"; import { buildSignOperation } from "./signOperation"; import { getAccountShape } from "./sync"; +import { updateTransaction } from "./updateTransaction"; export function createBridges( signerContext: SignerContext, @@ -42,8 +42,9 @@ export function createBridges( const accountBridge: AccountBridge = { broadcast, createTransaction, - // TODO: maybe give example of updateTransaction and when it's required - updateTransaction: defaultUpdateTransaction, + updateTransaction, + // NOTE: use updateTransaction: defaultUpdateTransaction, + // if you don't need to update the transaction patch object prepareTransaction, getTransactionStatus, estimateMaxSpendable, diff --git a/libs/coin-modules/coin-module-boilerplate/src/bridge/updateTransaction.ts b/libs/coin-modules/coin-module-boilerplate/src/bridge/updateTransaction.ts new file mode 100644 index 000000000000..ecc5d88a3f27 --- /dev/null +++ b/libs/coin-modules/coin-module-boilerplate/src/bridge/updateTransaction.ts @@ -0,0 +1,16 @@ +import { updateTransaction as defaultUpdateTransaction } from "@ledgerhq/coin-framework/bridge/jsHelpers"; +import { AccountBridge } from "@ledgerhq/types-live"; +import type { Transaction } from "../types"; + +// NOTE: this method is optional, use defaultUpdateTransaction +// acts as a middleware to update the transaction patch object + +// NOTE: here is an example transaction updater function +// in this case, it resets fee to null depending on the patch content +export const updateTransaction: AccountBridge["updateTransaction"] = (tx, patch) => { + if (patch.recipient === "boilerplate1" || true) { + patch = { ...patch, fee: null }; + } + + return defaultUpdateTransaction(tx, patch); +};