Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
62cd748
chore: update cta to respect buy regions and route correctly per chain
nickewansmith Dec 16, 2025
6c3e5a5
chore: add feature flag gating
nickewansmith Dec 16, 2025
f7dbf9d
fix: bugbot comments
nickewansmith Dec 17, 2025
043ac35
fix: bugbot comments
nickewansmith Dec 17, 2025
edd1d41
Merge branch 'main' into MUSD-124-as-a-user-i-want-to-see-a-call-to-a…
nickewansmith Dec 17, 2025
95a2480
feat: added mUSD conversion payment token blocklist with wildcard sup…
Matt561 Dec 17, 2025
786b73c
Merge remote-tracking branch 'origin/MUSD-124-as-a-user-i-want-to-see…
Matt561 Dec 17, 2025
25c390d
feat: eod working
Matt561 Dec 18, 2025
8a0e5e9
feat: refactored useNavbar to allow render overrides
Matt561 Dec 18, 2025
0e6ea4b
Merge branch 'main' into fix/musd-151-musd-conversion-tx-data-not-cle…
Matt561 Dec 18, 2025
1c464ea
fix: fix breaking tests
Matt561 Dec 18, 2025
35f8474
fix: fix breaking tests
Matt561 Dec 18, 2025
073c6eb
Merge branch 'main' into fix/musd-151-musd-conversion-tx-data-not-cle…
Matt561 Dec 18, 2025
57d8f74
fix: memoize overrides to address cursor comment
Matt561 Dec 18, 2025
50e9738
Merge branch 'main' into fix/musd-151-musd-conversion-tx-data-not-cle…
Matt561 Dec 18, 2025
65b3e36
feat: added allowlist for dual filtering using allow and blocklist ov…
Matt561 Dec 18, 2025
9eca8af
feat: check for explicit undefined overrides in useNavbar tests
Matt561 Dec 18, 2025
c99d1a5
feat: broke out duplicate wildcard token list parsing into helper
Matt561 Dec 18, 2025
e68bf63
Merge remote-tracking branch 'origin/main' into feat/musd-136-allow-a…
Matt561 Dec 18, 2025
5f62275
feat: linked to wildcard-token-list doc in .js.example
Matt561 Dec 18, 2025
60b8485
feat: removed completed TODO
Matt561 Dec 18, 2025
b50f05d
chore: update cta to respect buy regions and route correctly per chain
nickewansmith Dec 16, 2025
2ba73e6
chore: add feature flag gating
nickewansmith Dec 16, 2025
329adc5
fix: bugbot comments
nickewansmith Dec 17, 2025
972b053
fix: bugbot comments
nickewansmith Dec 17, 2025
cd04745
chore: add MM_MUSD_CTA_ENABLED var to eaxmple
nickewansmith Dec 19, 2025
d8d439a
chore: refactor earn flow to add atokens in EarnTransactionMonitor
nickewansmith Dec 19, 2025
8557d04
chore: mocking for build
nickewansmith Dec 19, 2025
af49952
Merge branch 'MUSD-124-as-a-user-i-want-to-see-a-call-to-action-to-co…
nickewansmith Dec 19, 2025
2a205f5
Merge branch 'fix/musd-151-musd-conversion-tx-data-not-cleared-when-n…
nickewansmith Dec 19, 2025
ae9ba90
chore: updates the deposit confirmation view to match old flows view
nickewansmith Dec 19, 2025
c99630e
Merge remote-tracking branch 'origin/main' into feat/musd-136-allow-a…
Matt561 Dec 19, 2025
07c47e6
Merge branch 'main' into feat/musd-136-allow-all-tokens-to-be-convert…
Matt561 Dec 19, 2025
5dd143d
feat: wip proof of concept of quick convert flow
Matt561 Dec 16, 2025
9b285b5
feat: wip: refactored musd max convert flow to be part of redesigned …
Matt561 Dec 16, 2025
ab63471
feat: wip eod
Matt561 Dec 17, 2025
9d770ff
feat: add configurable quick convert amount
Matt561 Dec 19, 2025
8b6eeec
feat: replaced receive button on home page with quick convert link
Matt561 Dec 19, 2025
dfa8c14
Merge remote-tracking branch 'origin/feat/musd-148-quick-convert-spik…
Matt561 Dec 19, 2025
3ab68f8
Merge remote-tracking branch 'origin/feat/musd-136-allow-all-tokens-t…
Matt561 Dec 19, 2025
8909f37
[skip ci] Bump version number to 3317
metamaskbot Dec 19, 2025
e38a253
feat: updated mUSD asset list cta text
Matt561 Dec 19, 2025
725ddc7
[skip ci] Bump version number to 3318
metamaskbot Dec 19, 2025
91934ae
fix: outputToken not being available in useDepositConfirmationDetails
nickewansmith Dec 19, 2025
d9a35be
Merge branch 'nick/demo-build-earn-zpw' of https://github.com/MetaMas…
nickewansmith Dec 19, 2025
c0adf47
chore: bitrise changes
nickewansmith Dec 19, 2025
a113727
chore: update tooltips to match confirmations tooltips in desposit fl…
nickewansmith Jan 7, 2026
96dcc12
chore: merge main
nickewansmith Jan 7, 2026
fb989d9
Revert "feat: replaced receive button on home page with quick convert…
nickewansmith Jan 8, 2026
da7693c
Revert "feat: add configurable quick convert amount"
nickewansmith Jan 8, 2026
cd5ffe8
Revert "feat: wip eod"
nickewansmith Jan 8, 2026
d666b00
Revert "feat: wip proof of concept of quick convert flow"
nickewansmith Jan 8, 2026
8f13887
Revert "feat: wip: refactored musd max convert flow to be part of red…
nickewansmith Jan 8, 2026
23ed463
chore: merge main
nickewansmith Jan 8, 2026
3938495
chore: revert mocking
nickewansmith Jan 8, 2026
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
14 changes: 10 additions & 4 deletions app/components/UI/Earn/Views/EarnInputView/EarnInputView.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,8 @@ import { trace, TraceName } from '../../../../../util/trace';
import { useEndTraceOnMount } from '../../../../hooks/useEndTraceOnMount';
import { EVM_SCOPE } from '../../constants/networks';
import { selectConfirmationRedesignFlags } from '../../../../../selectors/featureFlagController/confirmations';
import { ConfirmationLoader } from '../../../../Views/confirmations/components/confirm/confirm-component';
import { useConfirmNavigation } from '../../../../Views/confirmations/hooks/useConfirmNavigation';
///: BEGIN:ONLY_INCLUDE_IF(tron)
import useTronStake from '../../hooks/useTronStake';
import useTronStakeApy from '../../hooks/useTronStakeApy';
Expand All @@ -86,6 +88,7 @@ const EarnInputView = () => {
// navigation hooks
const navigation = useNavigation();
const route = useRoute<EarnInputViewProps['route']>();
const { navigateToConfirmation } = useConfirmNavigation();
const { token } = route.params;

// We want to keep track of the last quick amount pressed before navigating to review.
Expand Down Expand Up @@ -434,17 +437,19 @@ const EarnInputView = () => {
type: TransactionType.lendingDeposit,
};

// Navigate first so the loader shows while the transaction batch is being added
navigateToConfirmation({
loader: ConfirmationLoader.Default,
stack: 'StakeScreens',
});

addTransactionBatch({
from: (selectedAccount?.address as Hex) || '0x',
networkClientId,
origin: ORIGIN_METAMASK,
transactions: [approveTx, lendingDepositTx],
requireApproval: true,
});

navigation.navigate('StakeScreens', {
screen: Routes.FULL_SCREEN_CONFIRMATIONS.REDESIGNED_CONFIRMATIONS,
});
};

const createLegacyLendingDepositConfirmation = (
Expand Down Expand Up @@ -491,6 +496,7 @@ const EarnInputView = () => {
amountTokenMinimalUnit,
networkClientId,
navigation,
navigateToConfirmation,
token,
amountFiatNumber,
annualRewardsToken,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,8 +84,7 @@ const EarnLendingWithdrawalConfirmationView = () => {

const [isConfirmButtonDisabled, setIsConfirmButtonDisabled] = useState(false);

const { earnTokenPair, getTokenSnapshot, tokenSnapshot } =
useEarnToken(token);
const { earnTokenPair } = useEarnToken(token);

const earnToken = earnTokenPair?.earnToken;
const outputToken = earnTokenPair?.outputToken;
Expand Down Expand Up @@ -181,15 +180,6 @@ const EarnLendingWithdrawalConfirmationView = () => {
// return parseFloat(healthFactor).toFixed(2);
// };

useEffect(() => {
if (!earnToken) {
getTokenSnapshot(
outputToken?.chainId as Hex,
outputToken?.experience.market?.underlying?.address as Hex,
);
}
}, [outputToken, getTokenSnapshot, earnToken]);

// Needed to get token's network name
const networkConfig =
Engine.context.NetworkController.getNetworkConfigurationByChainId(
Expand Down Expand Up @@ -339,36 +329,8 @@ const EarnLendingWithdrawalConfirmationView = () => {
},
(transactionMeta) => transactionMeta.id === transactionId,
);
Engine.controllerMessenger.subscribeOnceIf(
'TransactionController:transactionConfirmed',
() => {
if (!earnToken) {
try {
const tokenNetworkClientId =
Engine.context.NetworkController.findNetworkClientIdByChainId(
tokenSnapshot?.chainId as Hex,
);
Engine.context.TokensController.addToken({
decimals: tokenSnapshot?.token?.decimals || 0,
symbol: tokenSnapshot?.token?.symbol || '',
address: tokenSnapshot?.token?.address || '',
name: tokenSnapshot?.token?.name || '',
networkClientId: tokenNetworkClientId,
}).catch(console.error);
} catch (error) {
console.error(
error,
`error adding counter-token for ${
outputToken?.symbol || outputToken?.ticker || ''
} on confirmation`,
);
}
}
},
(transactionMeta) => transactionMeta.id === transactionId,
);
},
[emitTxMetaMetric, tokenSnapshot, earnToken, outputToken, navigation],
[emitTxMetaMetric, navigation, outputToken?.chainId],
);

// Guards
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,17 @@
import React from 'react';
import { render } from '@testing-library/react-native';
import EarnTransactionMonitor from './EarnTransactionMonitor';
import { useEarnLendingTransactionStatus } from '../hooks/useEarnLendingTransactionStatus';
import { useMusdConversionStatus } from '../hooks/useMusdConversionStatus';

jest.mock('../hooks/useMusdConversionStatus');
jest.mock('../hooks/useEarnLendingTransactionStatus');

describe('EarnTransactionMonitor', () => {
const mockUseMusdConversionStatus = jest.mocked(useMusdConversionStatus);
const mockUseEarnLendingTransactionStatus = jest.mocked(
useEarnLendingTransactionStatus,
);

beforeEach(() => {
jest.clearAllMocks();
Expand All @@ -28,6 +33,12 @@ describe('EarnTransactionMonitor', () => {
expect(mockUseMusdConversionStatus).toHaveBeenCalledTimes(1);
});

it('calls useEarnLendingTransactionStatus hook', () => {
render(<EarnTransactionMonitor />);

expect(mockUseEarnLendingTransactionStatus).toHaveBeenCalledTimes(1);
});

it('returns null', () => {
const { toJSON } = render(<EarnTransactionMonitor />);

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import React from 'react';
import { useEarnLendingTransactionStatus } from '../hooks/useEarnLendingTransactionStatus';
import { useMusdConversionStatus } from '../hooks/useMusdConversionStatus';

/**
Expand All @@ -11,6 +12,9 @@ const EarnTransactionMonitor: React.FC = () => {
// Enable mUSD conversion status monitoring and toasts
useMusdConversionStatus();

// Enable lending transaction token addition (no toasts)
useEarnLendingTransactionStatus();

// This component doesn't render anything
return null;
};
Expand Down
Loading
Loading