Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -370,6 +370,7 @@ describe('useTransactionConfirm', () => {
maxPriorityFeePerGas: '0x2',
} as unknown as ReturnType<typeof useSelectedGasFeeToken>);
});

it('adds batchTransactions and gas properties when smart transaction is enabled', async () => {
const { result } = renderHook();

Expand Down Expand Up @@ -408,6 +409,25 @@ describe('useTransactionConfirm', () => {
}),
});
});

it('does nothing if isGasFeeTokenIgnoredIfBalance', async () => {
useTransactionMetadataRequestMock.mockReturnValue({
id: transactionIdMock,
isGasFeeTokenIgnoredIfBalance: true,
} as unknown as TransactionMeta);

const { result } = renderHook();

await act(async () => {
await result.current.onConfirm();
});

expect(onApprovalConfirm).toHaveBeenCalledWith(expect.anything(), {
txMeta: expect.not.objectContaining({
batchTransactions: expect.any(Array),
}),
});
});
});

describe('handleGasless7702', () => {
Expand Down Expand Up @@ -466,5 +486,28 @@ describe('useTransactionConfirm', () => {
txMeta: expect.not.objectContaining({ isExternalSign: true }),
});
});

it('does nothing if isGasFeeTokenIgnoredIfBalance', async () => {
isSendBundleSupportedMock.mockReturnValue(Promise.resolve(false));

useSelectedGasFeeTokenMock.mockReturnValue({
transferTransaction: { data: '0xabc' },
} as unknown as ReturnType<typeof useSelectedGasFeeToken>);

useTransactionMetadataRequestMock.mockReturnValue({
id: transactionIdMock,
isGasFeeTokenIgnoredIfBalance: true,
} as unknown as TransactionMeta);

const { result } = renderHook();

await act(async () => {
await result.current.onConfirm();
});

expect(onApprovalConfirm).toHaveBeenCalledWith(expect.anything(), {
txMeta: expect.not.objectContaining({ isExternalSign: true }),
});
});
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,8 @@ export function useTransactionConfirm() {
const navigation = useNavigation();
const transactionMetadata = useTransactionMetadataRequest();
const selectedGasFeeToken = useSelectedGasFeeToken();
const { chainId, type } = transactionMetadata ?? {};
const { chainId, isGasFeeTokenIgnoredIfBalance, type } =
transactionMetadata ?? {};
const { isFullScreenConfirmation } = useFullScreenConfirmation();
const quotes = useTransactionPayQuotes();

Expand All @@ -50,7 +51,7 @@ export function useTransactionConfirm() {

const handleSmartTransaction = useCallback(
(updatedMetadata: TransactionMeta) => {
if (!selectedGasFeeToken) {
if (!selectedGasFeeToken || isGasFeeTokenIgnoredIfBalance) {
return;
}

Expand All @@ -77,14 +78,15 @@ export function useTransactionConfirm() {
},
[
selectedGasFeeToken,
isGasFeeTokenIgnoredIfBalance,
isGaslessSupported,
transactionMetadata?.isGasFeeSponsored,
],
);

const handleGasless7702 = useCallback(
(updatedMetadata: TransactionMeta) => {
if (!selectedGasFeeToken) {
if (!selectedGasFeeToken || isGasFeeTokenIgnoredIfBalance) {
return;
}

Expand All @@ -93,6 +95,7 @@ export function useTransactionConfirm() {
isGaslessSupported && transactionMetadata?.isGasFeeSponsored;
},
[
isGasFeeTokenIgnoredIfBalance,
isGaslessSupported,
selectedGasFeeToken,
transactionMetadata?.isGasFeeSponsored,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@ export const TransactionControllerInit: ControllerInitFunction<
getGasFeeEstimates: (...args) =>
gasFeeController.fetchGasFeeEstimates(...args),
getNetworkClientRegistry: (...args) =>
// @ts-expect-error - NetworkController registry type mismatch between peer dependencies
networkController.getNetworkClientRegistry(...args),
getNetworkState: () => networkController.state,
hooks: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,7 @@ export function getTransactionControllerInitMessenger(
'NetworkController:getEIP1559Compatibility',
'KeyringController:signEip7702Authorization',
'KeyringController:signTypedMessage',
'RemoteFeatureFlagController:getState',
'TransactionController:addTransaction',
'TransactionController:addTransactionBatch',
'TransactionController:getState',
Expand Down
6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,7 @@
"@scure/bip32": "1.7.0",
"@metamask/snaps-sdk": "^10.0.0",
"react-native@0.76.9": "patch:react-native@npm%3A0.76.9#./.yarn/patches/react-native-npm-0.76.9-1c25352097.patch",
"@metamask/transaction-controller@npm:^62.1.0": "patch:@metamask/transaction-controller@npm%3A62.1.0#~/.yarn/patches/@metamask-transaction-controller-npm-61.0.0-cccac388c7.patch"
"@metamask/transaction-controller@npm:^62.3.0": "patch:@metamask/transaction-controller@npm%3A62.3.0#~/.yarn/patches/@metamask-transaction-controller-npm-61.0.0-cccac388c7.patch"
},
"dependencies": {
"@config-plugins/detox": "^9.0.0",
Expand Down Expand Up @@ -285,8 +285,8 @@
"@metamask/swappable-obj-proxy": "^2.1.0",
"@metamask/swaps-controller": "^15.0.0",
"@metamask/token-search-discovery-controller": "^4.0.0",
"@metamask/transaction-controller": "patch:@metamask/transaction-controller@npm%3A62.1.0#~/.yarn/patches/@metamask-transaction-controller-npm-61.0.0-cccac388c7.patch",
"@metamask/transaction-pay-controller": "^10.0.0",
"@metamask/transaction-controller": "patch:@metamask/transaction-controller@npm%3A62.3.0#~/.yarn/patches/@metamask-transaction-controller-npm-61.0.0-cccac388c7.patch",
"@metamask/transaction-pay-controller": "^10.1.0",
"@metamask/tron-wallet-snap": "^1.12.1",
"@metamask/utils": "^11.8.1",
"@ngraveio/bc-ur": "^1.1.6",
Expand Down
Loading
Loading