Skip to content

Commit 9719b34

Browse files
authored
chore: bump core-backend + refactor query (#40731)
## **Description** Refactored multichain activity transaction queries to use apiClient query options directly and removed the now-redundant local query helper. Bump core-backend ## **Changelog** <!-- If this PR is not End-User-Facing and should not show up in the CHANGELOG, you can choose to either: 1. Write `CHANGELOG entry: null` 2. Label with `no-changelog` If this PR is End-User-Facing, please write a short User-Facing description in the past tense like: `CHANGELOG entry: Added a new tab for users to see their NFTs` `CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker` (This helps the Release Engineer do their job more quickly and accurately) --> CHANGELOG entry: chore: bump core-backend; refactor query ## **Related issues** Fixes: ## **Manual testing steps** 1. Activity list works as normal ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [ ] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **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_SUMMARY --> --- > [!NOTE] > **Medium Risk** > Touches multichain activity transaction fetching by switching to `apiClient`-provided infinite query options and adjusting `react-query` enable/refetch behavior, which could affect caching, pagination, or when requests fire. Dependency bump to `@metamask/core-backend` may also change runtime query option defaults. > > **Overview** > **Multichain Activity v2 transaction fetching was refactored** to use `apiClient.accounts.getV4MultiAccountTransactionsInfiniteQueryOptions` directly instead of the local `queries.transactions` helper, and `ui/helpers/queries.ts` was removed. > > `useTransactionsQuery` now explicitly gates queries on external services + non-empty networks/accounts and sets additional `react-query` behaviors (`keepPreviousData`, `refetchOnMount`, `refetchOnWindowFocus`); `usePrefetchTransactions` was updated accordingly, and tests were rewritten to mock the new `apiClient` query-options call. > > Separately, **`@metamask/core-backend` was bumped to `^6.1.0`** (with corresponding lockfile updates). > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 4c14966. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY -->
1 parent 1dd41cf commit 9719b34

File tree

5 files changed

+57
-98
lines changed

5 files changed

+57
-98
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -302,7 +302,7 @@
302302
"@metamask/connectivity-controller": "^0.1.0",
303303
"@metamask/contract-metadata": "^2.5.0",
304304
"@metamask/controller-utils": "^11.18.0",
305-
"@metamask/core-backend": "^6.0.0",
305+
"@metamask/core-backend": "^6.1.0",
306306
"@metamask/delegation-controller": "^2.0.1",
307307
"@metamask/delegation-core": "^0.2.0-rc.1",
308308
"@metamask/delegation-deployments": "^0.15.0",

ui/components/multichain/activity-v2/hooks.test.tsx

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,19 @@ import {
1717

1818
const mockUseInfiniteQuery = jest.fn();
1919
const mockUseQueryClient = jest.fn();
20-
const mockQueriesTransactions = jest.fn();
20+
const mockGetV4MultiAccountTransactionsInfiniteQueryOptions = jest.fn();
2121

2222
jest.mock('@tanstack/react-query', () => ({
2323
useInfiniteQuery: (...args: unknown[]) => mockUseInfiniteQuery(...args),
2424
useQueryClient: () => mockUseQueryClient(),
2525
}));
2626

27-
jest.mock('../../../helpers/queries', () => ({
28-
queries: {
29-
transactions: (...args: unknown[]) => mockQueriesTransactions(...args),
27+
jest.mock('../../../helpers/api-client', () => ({
28+
apiClient: {
29+
accounts: {
30+
getV4MultiAccountTransactionsInfiniteQueryOptions: (...args: unknown[]) =>
31+
mockGetV4MultiAccountTransactionsInfiniteQueryOptions(...args),
32+
},
3033
},
3134
}));
3235

@@ -536,7 +539,7 @@ describe('Query hooks', () => {
536539

537540
beforeEach(() => {
538541
mockUseInfiniteQuery.mockReturnValue({ data: undefined });
539-
mockQueriesTransactions.mockReturnValue({
542+
mockGetV4MultiAccountTransactionsInfiniteQueryOptions.mockReturnValue({
540543
queryKey: ['transactions'],
541544
queryFn: jest.fn(),
542545
getNextPageParam: jest.fn(),
@@ -556,16 +559,18 @@ describe('Query hooks', () => {
556559
it('useTransactionsQuery composes query options and delegates to useInfiniteQuery', () => {
557560
renderQueryHook(() => useTransactionsQuery());
558561

559-
expect(mockQueriesTransactions).toHaveBeenCalledWith(
560-
{
561-
accountAddresses: [`eip155:0:${expectedEvmAddress}`],
562-
evmAddress: expectedEvmAddress,
563-
networks: expectedNetworks,
564-
},
565-
{ enabled: true, keepPreviousData: true },
566-
);
562+
expect(
563+
mockGetV4MultiAccountTransactionsInfiniteQueryOptions,
564+
).toHaveBeenCalledWith({
565+
accountAddresses: [`eip155:0:${expectedEvmAddress}`],
566+
networks: expectedNetworks,
567+
includeTxMetadata: true,
568+
});
567569
expect(mockUseInfiniteQuery).toHaveBeenCalledWith(
568-
expect.objectContaining({ select: expect.any(Function) }),
570+
expect.objectContaining({
571+
select: expect.any(Function),
572+
enabled: true,
573+
}),
569574
);
570575
});
571576

@@ -583,7 +588,9 @@ describe('Query hooks', () => {
583588
};
584589

585590
mockUseQueryClient.mockReturnValue(mockQueryClient);
586-
mockQueriesTransactions.mockReturnValue(queryOptions);
591+
mockGetV4MultiAccountTransactionsInfiniteQueryOptions.mockReturnValue(
592+
queryOptions,
593+
);
587594

588595
const { result } = renderQueryHook(() => usePrefetchTransactions());
589596

ui/components/multichain/activity-v2/hooks.ts

Lines changed: 27 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ import { selectTransactions } from '../../../../shared/lib/multichain/transforma
1515
import { SET_APPROVAL_FOR_ALL } from '../../../../shared/constants/transaction';
1616
import { selectEnabledNetworksAsCaipChainIds } from '../../../selectors/multichain/networks';
1717
import { selectRequiredTransactionHashes } from '../../../selectors/transactionController';
18-
import { queries } from '../../../helpers/queries';
1918
import { useBridgeActivityData } from '../../../hooks/bridge/useBridgeActivityData';
19+
import { apiClient } from '../../../helpers/api-client';
2020
import { calculateFiatFromMarketRates } from './helpers';
2121
import type { ActivityListFilter } from './helpers';
2222

@@ -62,19 +62,25 @@ export function useTransactionsQuery(filter?: ActivityListFilter) {
6262
[evmAddress, internalTxHashes],
6363
);
6464

65-
const queryOptions = useMemo(
66-
() =>
67-
queries.transactions(
68-
{ accountAddresses, evmAddress, networks },
69-
{
70-
enabled: Boolean(useExternalServices) && networks.length > 0,
71-
keepPreviousData: true,
72-
},
73-
),
74-
[evmAddress, accountAddresses, networks, useExternalServices],
75-
);
65+
const queryOptions =
66+
apiClient.accounts.getV4MultiAccountTransactionsInfiniteQueryOptions({
67+
accountAddresses,
68+
networks,
69+
includeTxMetadata: true,
70+
});
7671

77-
return useInfiniteQuery({ ...queryOptions, select: selectFn });
72+
// @ts-expect-error apiClient returns v5 types, repo still in v4
73+
return useInfiniteQuery({
74+
...queryOptions,
75+
select: selectFn,
76+
enabled:
77+
Boolean(useExternalServices) &&
78+
networks.length > 0 &&
79+
accountAddresses.length > 0,
80+
keepPreviousData: true,
81+
refetchOnMount: true,
82+
refetchOnWindowFocus: true,
83+
});
7884
}
7985

8086
export function usePrefetchTransactions() {
@@ -83,8 +89,13 @@ export function usePrefetchTransactions() {
8389
const { evmAddress, accountAddresses, networks } = useTransactionParams();
8490

8591
const queryOptions = useMemo(
86-
() => queries.transactions({ accountAddresses, evmAddress, networks }),
87-
[evmAddress, accountAddresses, networks],
92+
() =>
93+
apiClient.accounts.getV4MultiAccountTransactionsInfiniteQueryOptions({
94+
accountAddresses,
95+
networks,
96+
includeTxMetadata: true,
97+
}),
98+
[accountAddresses, networks],
8899
);
89100

90101
return useCallback(() => {
@@ -101,6 +112,7 @@ export function usePrefetchTransactions() {
101112
return;
102113
}
103114

115+
// @ts-expect-error apiClient returns v5 types, repo still in v4
104116
queryClient.prefetchInfiniteQuery(queryOptions).catch(() => {
105117
// Prefetch is opportunistic
106118
});

ui/helpers/queries.ts

Lines changed: 0 additions & 60 deletions
This file was deleted.

yarn.lock

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5940,19 +5940,19 @@ __metadata:
59405940
languageName: node
59415941
linkType: hard
59425942

5943-
"@metamask/core-backend@npm:^6.0.0":
5944-
version: 6.0.0
5945-
resolution: "@metamask/core-backend@npm:6.0.0"
5943+
"@metamask/core-backend@npm:^6.0.0, @metamask/core-backend@npm:^6.1.0":
5944+
version: 6.1.0
5945+
resolution: "@metamask/core-backend@npm:6.1.0"
59465946
dependencies:
5947-
"@metamask/accounts-controller": "npm:^36.0.0"
5948-
"@metamask/controller-utils": "npm:^11.18.0"
5947+
"@metamask/accounts-controller": "npm:^37.0.0"
5948+
"@metamask/controller-utils": "npm:^11.19.0"
59495949
"@metamask/keyring-controller": "npm:^25.1.0"
59505950
"@metamask/messenger": "npm:^0.3.0"
59515951
"@metamask/profile-sync-controller": "npm:^27.1.0"
59525952
"@metamask/utils": "npm:^11.9.0"
59535953
"@tanstack/query-core": "npm:^5.62.16"
59545954
uuid: "npm:^8.3.2"
5955-
checksum: 10/b663aa0ce78ffd493f556070906d7f008c0bd97ce613445366340fe61c0db4b85ca5ce7153a21fb4358a1b5fac31973b708ecb1795fa13fb1d827f62718eaca8
5955+
checksum: 10/9271cb7eea6c8122c505b66ebced1861572bd781f4ed294e4d9dc2d9f7f100412f5c44a8e53f9b6dc02aa2801f64daeb9fcc398d19cdb04222ae121438017686
59565956
languageName: node
59575957
linkType: hard
59585958

@@ -33369,7 +33369,7 @@ __metadata:
3336933369
"@metamask/connectivity-controller": "npm:^0.1.0"
3337033370
"@metamask/contract-metadata": "npm:^2.5.0"
3337133371
"@metamask/controller-utils": "npm:^11.18.0"
33372-
"@metamask/core-backend": "npm:^6.0.0"
33372+
"@metamask/core-backend": "npm:^6.1.0"
3337333373
"@metamask/delegation-controller": "npm:^2.0.1"
3337433374
"@metamask/delegation-core": "npm:^0.2.0-rc.1"
3337533375
"@metamask/delegation-deployments": "npm:^0.15.0"

0 commit comments

Comments
 (0)