Skip to content

Commit 3453258

Browse files
n3pscursoragent
andauthored
refactor: resolve activity redesign (MetaMask#35203)
<!-- CURSOR_AGENT_PR_BODY_BEGIN --> ## **Description** Resolves `tmcuActivityRedesignEnabled` and `tmcuTransactionsRedesignEnabled`. Legacy-only selectors, components, fixtures, tests, and non-production and unused implementation are removed. **NOTE:** This PR focuses on removing *unused* code, the pre-redesign Activity flow, including *assertions on unused code*. _New_ assertions will be a separate PR. ## **Changelog** CHANGELOG entry: null ## **Related issues** Refs: TMCU-854, TMCU-864 ## **Manual testing steps** ```gherkin Feature: Activity redesign is the default experience Scenario: user views activity and transaction details Given a wallet with EVM and non-EVM activity, including bridge, Ramp, Perps, and Predict entries When the user opens Activity and selects supported activity rows Then the redesigned Activity list and Activity Details screens are shown And Ramp sell and created-deposit actions retain their specialized destinations ``` ## **Screenshots/Recordings** N/A — this removes inactive legacy code while preserving the already-launched redesign UI. ## **Pre-merge author checklist** - [x] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I've included tests if applicable - [x] I've documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I've applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. #### Performance checks (if applicable) - [x] I've tested on Android — N/A; no rendering behavior was added or changed - [x] I've tested with a power user scenario — N/A; no rendering behavior was added or changed - [x] I've instrumented key operations with Sentry traces for production performance metrics — N/A; no new operation was introduced For performance guidelines and tooling, see the [Performance Guide](https://consensyssoftware.atlassian.net/wiki/spaces/TL1/pages/400085549067/Performance+Guide+for+Engineers). ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. <!-- CURSOR_AGENT_PR_BODY_END --> <div><a href="https://cursor.com/agents/bc-756b7456-0030-40d4-9d9a-76e917a85f51?cursor_ref=pr_footer&cursor_cta=open_in_web"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/open-in-web-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/open-in-web-light.png"><img alt="Open in Web" width="114" height="28" src="https://cursor.com/assets/images/open-in-web-dark.png"></picture></a>&nbsp;<a href="https://cursor.com/background-agent?bcId=bc-756b7456-0030-40d4-9d9a-76e917a85f51&cursor_ref=pr_footer&cursor_cta=open_in_cursor"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/open-in-cursor-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/open-in-cursor-light.png"><img alt="Open in Cursor" width="131" height="28" src="https://cursor.com/assets/images/open-in-cursor-dark.png"></picture></a>&nbsp;</div> --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com>
1 parent 4cacc88 commit 3453258

74 files changed

Lines changed: 490 additions & 9945 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

app/components/UI/Bridge/components/TransactionDetails/TransactionDetails.test.tsx

Lines changed: 89 additions & 415 deletions
Large diffs are not rendered by default.

app/components/UI/Bridge/components/TransactionDetails/TransactionDetails.tsx

Lines changed: 225 additions & 513 deletions
Large diffs are not rendered by default.

app/components/UI/Perps/Views/PerpsTransactionsView/PerpsTransactionsView.tsx

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ import { TabEmptyState } from '../../../../../component-library/components-temp/
2828
import ButtonFilter from '../../../../../component-library/components-temp/ButtonFilter';
2929
import { selectSelectedAccountGroupEvmInternalAccount } from '../../../../../selectors/multichainAccounts/accountTreeController';
3030
import { selectChainId } from '../../../../../selectors/networkController';
31-
import { selectIsTransactionsRedesignEnabled } from '../../../../../selectors/featureFlagController/activityRedesign';
3231
import {
3332
formatAccountToCaipAccountId,
3433
PERPS_TRANSACTIONS_HISTORY_CONSTANTS,
@@ -80,9 +79,6 @@ const PerpsTransactionsView: React.FC = () => {
8079
const evmAccount = useSelector(selectSelectedAccountGroupEvmInternalAccount);
8180
const selectedAddress = evmAccount?.address;
8281
const currentChainId = useSelector(selectChainId);
83-
const isTransactionsRedesignEnabled = useSelector(
84-
selectIsTransactionsRedesignEnabled,
85-
);
8682
const isTestnet = usePerpsNetwork() === 'testnet';
8783
const accountId = useMemo(() => {
8884
if (!selectedAddress || !currentChainId) {
@@ -335,12 +331,7 @@ const PerpsTransactionsView: React.FC = () => {
335331
.build(),
336332
);
337333

338-
navigateToPerpsTransactionDetails(
339-
navigation,
340-
transaction,
341-
isTransactionsRedesignEnabled,
342-
isTestnet,
343-
);
334+
navigateToPerpsTransactionDetails(navigation, transaction, isTestnet);
344335
};
345336

346337
// Render right content based on transaction type

app/components/UI/Perps/components/PerpsMarketTradesList/PerpsMarketTradesList.test.tsx

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -414,29 +414,6 @@ describe('PerpsMarketTradesList', () => {
414414
}),
415415
);
416416
});
417-
418-
it('navigates to the legacy position screen when redesign is disabled', () => {
419-
const { useSelector } = jest.requireMock('react-redux');
420-
useSelector.mockImplementation(() => false);
421-
mockUsePerpsMarketFills.mockReturnValue(
422-
createMockFillsReturn(mockOrderFills),
423-
);
424-
425-
render(<PerpsMarketTradesList symbol="ETH" />);
426-
427-
const tradeItem = screen.getByText('Opened long');
428-
fireEvent.press(tradeItem.parent?.parent || tradeItem);
429-
430-
expect(mockNavigate).toHaveBeenCalledWith(
431-
Routes.PERPS.POSITION_TRANSACTION,
432-
expect.objectContaining({
433-
transaction: expect.objectContaining({
434-
type: 'trade',
435-
id: expect.stringContaining('fill-1'),
436-
}),
437-
}),
438-
);
439-
});
440417
});
441418

442419
describe('Hook Integration', () => {

app/components/UI/Perps/components/PerpsMarketTradesList/PerpsMarketTradesList.tsx

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import React, { useCallback, useMemo } from 'react';
22
import { View, TouchableOpacity, FlatList } from 'react-native';
33
import { useNavigation } from '@react-navigation/native';
4-
import { useSelector } from 'react-redux';
54
import type { AppNavigationProp } from '../../../../../core/NavigationService/types';
65

76
import {
@@ -38,7 +37,6 @@ import {
3837
HOME_SCREEN_CONFIG,
3938
} from '../../constants/perpsConfig';
4039
import { navigateToPerpsTransactionDetails } from '../../utils/navigateToPerpsTransactionDetails';
41-
import { selectIsTransactionsRedesignEnabled } from '../../../../../selectors/featureFlagController/activityRedesign';
4240
import { usePerpsNetwork } from '../../hooks/usePerpsNetwork';
4341

4442
interface PerpsMarketTradesListProps {
@@ -52,9 +50,6 @@ const PerpsMarketTradesList: React.FC<PerpsMarketTradesListProps> = ({
5250
}) => {
5351
const { styles } = useStyles(styleSheet, {});
5452
const navigation = useNavigation<AppNavigationProp>();
55-
const isTransactionsRedesignEnabled = useSelector(
56-
selectIsTransactionsRedesignEnabled,
57-
);
5853
const isTestnet = usePerpsNetwork() === 'testnet';
5954
const { trackEvent, createEventBuilder } = useAnalytics();
6055

@@ -96,20 +91,9 @@ const PerpsMarketTradesList: React.FC<PerpsMarketTradesListProps> = ({
9691
.build(),
9792
);
9893

99-
navigateToPerpsTransactionDetails(
100-
navigation,
101-
transaction,
102-
isTransactionsRedesignEnabled,
103-
isTestnet,
104-
);
94+
navigateToPerpsTransactionDetails(navigation, transaction, isTestnet);
10595
},
106-
[
107-
navigation,
108-
isTransactionsRedesignEnabled,
109-
isTestnet,
110-
trackEvent,
111-
createEventBuilder,
112-
],
96+
[navigation, isTestnet, trackEvent, createEventBuilder],
11397
);
11498

11599
// Render right content for trades

app/components/UI/Perps/components/PerpsRecentActivityList/PerpsRecentActivityList.test.tsx

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -346,21 +346,6 @@ describe('PerpsRecentActivityList', () => {
346346
);
347347
});
348348

349-
it('navigates to the legacy position screen when redesign is disabled', () => {
350-
const { useSelector } = jest.requireMock('react-redux');
351-
useSelector.mockImplementation(() => false);
352-
353-
render(<PerpsRecentActivityList transactions={mockTransactions} />);
354-
355-
const transactionItem = screen.getByText('Opened long');
356-
fireEvent.press(transactionItem.parent?.parent || transactionItem);
357-
358-
expect(mockNavigate).toHaveBeenCalledWith(
359-
Routes.PERPS.POSITION_TRANSACTION,
360-
{ transaction: mockTransactions[0] },
361-
);
362-
});
363-
364349
it('handles multiple presses on header', () => {
365350
render(<PerpsRecentActivityList transactions={mockTransactions} />);
366351

app/components/UI/Perps/components/PerpsRecentActivityList/PerpsRecentActivityList.tsx

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import React, { useCallback } from 'react';
22
import { FlatList } from 'react-native';
33
import { useNavigation } from '@react-navigation/native';
4-
import { useSelector } from 'react-redux';
54
import type { AppNavigationProp } from '../../../../../core/NavigationService/types';
65
import {
76
Box,
@@ -30,7 +29,6 @@ import {
3029
TransactionDetailLocation,
3130
} from '../../../../../core/Analytics/events/transactions';
3231
import { navigateToPerpsTransactionDetails } from '../../utils/navigateToPerpsTransactionDetails';
33-
import { selectIsTransactionsRedesignEnabled } from '../../../../../selectors/featureFlagController/activityRedesign';
3432
import { usePerpsNetwork } from '../../hooks/usePerpsNetwork';
3533

3634
interface PerpsRecentActivityListProps {
@@ -45,9 +43,6 @@ const PerpsRecentActivityList: React.FC<PerpsRecentActivityListProps> = ({
4543
iconSize = HOME_SCREEN_CONFIG.DefaultIconSize,
4644
}) => {
4745
const navigation = useNavigation<AppNavigationProp>();
48-
const isTransactionsRedesignEnabled = useSelector(
49-
selectIsTransactionsRedesignEnabled,
50-
);
5146
const isTestnet = usePerpsNetwork() === 'testnet';
5247
const { trackEvent, createEventBuilder } = useAnalytics();
5348
const activityTitle = strings('perps.home.recent_activity');
@@ -75,21 +70,10 @@ const PerpsRecentActivityList: React.FC<PerpsRecentActivityListProps> = ({
7570
.build(),
7671
);
7772

78-
navigateToPerpsTransactionDetails(
79-
navigation,
80-
transaction,
81-
isTransactionsRedesignEnabled,
82-
isTestnet,
83-
);
73+
navigateToPerpsTransactionDetails(navigation, transaction, isTestnet);
8474
}
8575
},
86-
[
87-
navigation,
88-
isTransactionsRedesignEnabled,
89-
isTestnet,
90-
trackEvent,
91-
createEventBuilder,
92-
],
76+
[navigation, isTestnet, trackEvent, createEventBuilder],
9377
);
9478

9579
const renderItem = useCallback(

app/components/UI/Perps/hooks/usePerpsToasts.test.tsx

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -60,18 +60,8 @@ jest.mock('@metamask/design-system-react-native', () => ({
6060
},
6161
}));
6262

63-
let mockTransactionsRedesignEnabled = false;
6463
let mockDepositMeta: { chainId: string } | undefined;
6564

66-
jest.mock(
67-
'../../../../selectors/featureFlagController/activityRedesign',
68-
() => ({
69-
selectIsTransactionsRedesignEnabled: jest.fn(
70-
() => mockTransactionsRedesignEnabled,
71-
),
72-
}),
73-
);
74-
7565
jest.mock('../../../../selectors/transactionController', () => ({
7666
selectTransactionMetadataById: jest.fn(() => mockDepositMeta),
7767
}));
@@ -103,7 +93,6 @@ describe('usePerpsToasts', () => {
10393
beforeEach(() => {
10494
jest.clearAllMocks();
10595

106-
mockTransactionsRedesignEnabled = false;
10796
mockDepositMeta = undefined;
10897
mockShowToast = jest.fn();
10998
mockCloseToast = jest.fn();
@@ -219,7 +208,6 @@ describe('usePerpsToasts', () => {
219208
});
220209

221210
it('tracks to the redesigned details screen when the redesign is enabled', () => {
222-
mockTransactionsRedesignEnabled = true;
223211
mockDepositMeta = { chainId: '0xa4b1' };
224212
const { result } = renderHook(() => usePerpsToasts());
225213
const config =
@@ -242,8 +230,8 @@ describe('usePerpsToasts', () => {
242230
);
243231
});
244232

245-
it('tracks to the legacy details screen when the redesign is disabled', () => {
246-
mockDepositMeta = { chainId: '0xa4b1' };
233+
it('tracks to the legacy details screen when the deposit metadata has no chainId', () => {
234+
mockDepositMeta = undefined;
247235
const { result } = renderHook(() => usePerpsToasts());
248236
const config =
249237
result.current.PerpsToastOptions.accountManagement.deposit.inProgress(

app/components/UI/Perps/hooks/usePerpsToasts.tsx

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ import {
2929
} from '../../../../component-library/components/Toast/Toast.types';
3030
import Routes from '../../../../constants/navigation/Routes';
3131
import { navigateToTransactionDetails } from '../../../../util/navigation/navigateToTransactionDetails';
32-
import { selectIsTransactionsRedesignEnabled } from '../../../../selectors/featureFlagController/activityRedesign';
3332
import { selectTransactionMetadataById } from '../../../../selectors/transactionController';
3433
import { store } from '../../../../store';
3534
// eslint-disable-next-line import-x/no-restricted-paths -- TODO(ADR-0020): shared activity type-filter; route-isolation backlog
@@ -395,8 +394,6 @@ const usePerpsToasts = (): {
395394
transactionId,
396395
initialTypeFilter: ActivityTypeFilter.Perps,
397396
...(perpsFilter ? { initialPerpsFilter: perpsFilter } : {}),
398-
isTransactionsRedesignEnabled:
399-
selectIsTransactionsRedesignEnabled(state),
400397
...(depositMeta?.chainId
401398
? { chainId: toEvmCaipChainId(depositMeta.chainId) }
402399
: {}),

app/components/UI/Perps/utils/navigateToPerpsTransactionDetails.test.ts

Lines changed: 5 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -51,12 +51,7 @@ describe('navigateToPerpsTransactionDetails', () => {
5151
it('opens Activity details for a mapped historic fill when redesign is enabled', () => {
5252
const navigation = createNavigation();
5353

54-
navigateToPerpsTransactionDetails(
55-
navigation,
56-
tradeTransaction,
57-
true,
58-
false,
59-
);
54+
navigateToPerpsTransactionDetails(navigation, tradeTransaction, false);
6055

6156
expect(navigation.navigate).toHaveBeenCalledWith(
6257
Routes.ACTIVITY_DETAILS,
@@ -71,12 +66,7 @@ describe('navigateToPerpsTransactionDetails', () => {
7166
it('tags testnet deposits with Arbitrum Sepolia', () => {
7267
const navigation = createNavigation();
7368

74-
navigateToPerpsTransactionDetails(
75-
navigation,
76-
depositTransaction,
77-
true,
78-
true,
79-
);
69+
navigateToPerpsTransactionDetails(navigation, depositTransaction, true);
8070

8171
expect(navigation.navigate).toHaveBeenCalledWith(
8272
Routes.ACTIVITY_DETAILS,
@@ -87,22 +77,6 @@ describe('navigateToPerpsTransactionDetails', () => {
8777
);
8878
});
8979

90-
it('opens the legacy position screen for a mapped fill when redesign is disabled', () => {
91-
const navigation = createNavigation();
92-
93-
navigateToPerpsTransactionDetails(
94-
navigation,
95-
tradeTransaction,
96-
false,
97-
false,
98-
);
99-
100-
expect(navigation.navigate).toHaveBeenCalledWith(
101-
Routes.PERPS.POSITION_TRANSACTION,
102-
{ transaction: tradeTransaction },
103-
);
104-
});
105-
10680
it('falls back to the legacy position screen when a trade cannot be mapped', () => {
10781
const navigation = createNavigation();
10882
const fill = tradeTransaction.fill;
@@ -117,7 +91,7 @@ describe('navigateToPerpsTransactionDetails', () => {
11791
},
11892
};
11993

120-
navigateToPerpsTransactionDetails(navigation, unmappedTrade, true, false);
94+
navigateToPerpsTransactionDetails(navigation, unmappedTrade, false);
12195

12296
expect(navigation.navigate).toHaveBeenCalledWith(
12397
Routes.PERPS.POSITION_TRANSACTION,
@@ -137,7 +111,7 @@ describe('navigateToPerpsTransactionDetails', () => {
137111
asset: 'ETH',
138112
};
139113

140-
navigateToPerpsTransactionDetails(navigation, unmappedOrder, true, false);
114+
navigateToPerpsTransactionDetails(navigation, unmappedOrder, false);
141115

142116
expect(navigation.navigate).toHaveBeenCalledWith(
143117
Routes.PERPS.ORDER_TRANSACTION,
@@ -157,7 +131,7 @@ describe('navigateToPerpsTransactionDetails', () => {
157131
asset: 'ETH',
158132
};
159133

160-
navigateToPerpsTransactionDetails(navigation, unmappedFunding, true, false);
134+
navigateToPerpsTransactionDetails(navigation, unmappedFunding, false);
161135

162136
expect(navigation.navigate).toHaveBeenCalledWith(
163137
Routes.PERPS.FUNDING_TRANSACTION,

0 commit comments

Comments
 (0)