Skip to content

feat: bump assets-controllers to v55.0.1 and add PV to NFT tab #30903

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 27 commits into from
Mar 24, 2025
Merged
Show file tree
Hide file tree
Changes from 21 commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
1a8fe9e
feat: add PV to NFT tab
sahar-fehri Mar 11, 2025
3d2f97e
fix: fix useNftsCollections
sahar-fehri Mar 11, 2025
3d30f6a
fix: fix test
sahar-fehri Mar 11, 2025
27bacde
fix: lint
sahar-fehri Mar 11, 2025
91e930b
Merge branch 'main' into feat/explicitly-send-chainIds-to-detectNFts
sahar-fehri Mar 11, 2025
89ed020
fix: tmp use of assets-controllers preview
sahar-fehri Mar 14, 2025
989fa4f
fix: css fix
sahar-fehri Mar 14, 2025
a55cda9
Update LavaMoat policies
metamaskbot Mar 14, 2025
1e758b1
Merge branch 'main' into feat/explicitly-send-chainIds-to-detectNFts
sahar-fehri Mar 17, 2025
69e3a63
Merge branch 'main' into feat/explicitly-send-chainIds-to-detectNFts
sahar-fehri Mar 17, 2025
d5e956d
fix: fix package
sahar-fehri Mar 17, 2025
e5b07de
fix: fix package preview
sahar-fehri Mar 17, 2025
33c4440
fix: bump assets-controllers to v54
sahar-fehri Mar 18, 2025
5833a9c
fix: conflicts
sahar-fehri Mar 18, 2025
408f23e
fix: delete patch
sahar-fehri Mar 18, 2025
1704d25
fix: fix e2e
sahar-fehri Mar 18, 2025
1852d40
fix: fix e2e
sahar-fehri Mar 18, 2025
d2bee29
fix: fix e2e
sahar-fehri Mar 18, 2025
2b050c1
fix: rm comment
sahar-fehri Mar 18, 2025
cf32b95
fix: add test
sahar-fehri Mar 19, 2025
10f9550
Merge branch 'main' into feat/explicitly-send-chainIds-to-detectNFts
sahar-fehri Mar 19, 2025
d58c4c7
chore: bump @metamask/assets-controllers to v55.0.1
sahar-fehri Mar 20, 2025
b8b59c1
Merge branch 'main' into feat/explicitly-send-chainIds-to-detectNFts
sahar-fehri Mar 20, 2025
1dec6dc
fix: update policies
sahar-fehri Mar 20, 2025
5fe1d7e
Revert "fix: update policies"
sahar-fehri Mar 20, 2025
8c44858
fix: manually updating lavamoat policies
sahar-fehri Mar 20, 2025
1408f7e
Merge branch 'main' into feat/explicitly-send-chainIds-to-detectNFts
sahar-fehri Mar 20, 2025
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
@@ -1,5 +1,5 @@
diff --git a/dist/assetsUtil.cjs b/dist/assetsUtil.cjs
index 017fb94055b64f99c75f8d54b763a501bdd03e97..34396ba143e3ebcb04fa2c80f7a35d1abd06710e 100644
index 0eb212b5eb9a9ef2f61c44b9e5f04b14d5571865..f4f097a86a0feba2d20f84199536fdd097360777 100644
--- a/dist/assetsUtil.cjs
+++ b/dist/assetsUtil.cjs
@@ -3,6 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
Expand All @@ -10,7 +10,7 @@ index 017fb94055b64f99c75f8d54b763a501bdd03e97..34396ba143e3ebcb04fa2c80f7a35d1a
exports.getKeyByValue = exports.fetchTokenContractExchangeRates = exports.reduceInBatchesSerially = exports.divideIntoBatches = exports.ethersBigNumberToBN = exports.addUrlProtocolPrefix = exports.getFormattedIpfsUrl = exports.getIpfsCIDv1AndPath = exports.removeIpfsProtocolPrefix = exports.isTokenListSupportedForNetwork = exports.isTokenDetectionSupportedForNetwork = exports.SupportedStakedBalanceNetworks = exports.SupportedTokenDetectionNetworks = exports.formatIconUrlWithProxy = exports.formatAggregatorNames = exports.hasNewCollectionFields = exports.compareNftMetadata = exports.TOKEN_PRICES_BATCH_SIZE = void 0;
const controller_utils_1 = require("@metamask/controller-utils");
const utils_1 = require("@metamask/utils");
@@ -233,7 +234,7 @@ async function getIpfsCIDv1AndPath(ipfsUrl) {
@@ -234,7 +235,7 @@ async function getIpfsCIDv1AndPath(ipfsUrl) {
const index = url.indexOf('/');
const cid = index !== -1 ? url.substring(0, index) : url;
const path = index !== -1 ? url.substring(index) : undefined;
Expand Down
12 changes: 0 additions & 12 deletions .yarn/patches/@metamask-assets-controllers-patch-3424767802.patch

This file was deleted.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -263,7 +263,7 @@
"@metamask/address-book-controller": "^6.0.3",
"@metamask/announcement-controller": "^7.0.3",
"@metamask/approval-controller": "^7.0.0",
"@metamask/assets-controllers": "patch:@metamask/assets-controllers@npm%3A53.1.1#~/.yarn/patches/@metamask-assets-controllers-npm-53.1.1-644979f986.patch",
"@metamask/assets-controllers": "patch:@metamask/assets-controllers@npm%3A54.0.0#~/.yarn/patches/@metamask-assets-controllers-npm-54.0.0-1b1fcfcc45.patch",
"@metamask/base-controller": "^8.0.0",
"@metamask/bitcoin-wallet-snap": "^0.9.0",
"@metamask/browser-passworder": "^4.3.0",
Expand Down
2 changes: 2 additions & 0 deletions test/e2e/fixture-builder.js
Original file line number Diff line number Diff line change
Expand Up @@ -394,6 +394,7 @@ class FixtureBuilder {
image:
'ipfs://bafkreifvhjdf6ve4jfv6qytqtux5nd4nwnelioeiqx5x2ez5yrgrzk7ypi',
standard: 'ERC1155',
chainId: 1337,
},
],
},
Expand Down Expand Up @@ -428,6 +429,7 @@ class FixtureBuilder {
name: 'Test Dapp NFTs #1',
standard: 'ERC721',
tokenId: '1',
chainId: 1337,
},
],
},
Expand Down
2 changes: 1 addition & 1 deletion test/e2e/tests/tokens/nft/mocks.js
Original file line number Diff line number Diff line change
Expand Up @@ -370,7 +370,7 @@ function setupAutoDetectMocking(
.withQuery({
limit: 50,
includeTopBid: true,
chainIds: '1',
chainIds: ['1', '59144'],
continuation: '',
})
.thenCallback(() => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,9 +55,13 @@ import { getMultichainNetwork } from '../../../../../selectors/multichain';

type AssetListControlBarProps = {
showTokensLinks?: boolean;
showTokenFiatBalance?: boolean;
};

const AssetListControlBar = ({ showTokensLinks }: AssetListControlBarProps) => {
const AssetListControlBar = ({
showTokensLinks,
showTokenFiatBalance,
}: AssetListControlBarProps) => {
const t = useI18nContext();
const dispatch = useDispatch();
const trackEvent = useContext(MetaMetricsContext);
Expand Down Expand Up @@ -113,6 +117,8 @@ const AssetListControlBar = ({ showTokensLinks }: AssetListControlBarProps) => {
useEffect(() => {
if (Object.keys(tokenNetworkFilter).length === 1) {
dispatch(setTokenNetworkFilter({ [currentNetwork.chainId]: true }));
} else {
dispatch(setTokenNetworkFilter(allOpts));
}
}, [Object.keys(allNetworks).length]);

Expand Down Expand Up @@ -253,7 +259,10 @@ const AssetListControlBar = ({ showTokensLinks }: AssetListControlBarProps) => {
minWidth: isFullScreen ? '250px' : '',
}}
>
<NetworkFilter handleClose={closePopover} />
<NetworkFilter
handleClose={closePopover}
showTokenFiatBalance={showTokenFiatBalance}
/>
</Popover>
<Popover
onClickOutside={closePopover}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,13 @@ import InfoTooltip from '../../../../ui/info-tooltip';

type SortControlProps = {
handleClose: () => void;
showTokenFiatBalance?: boolean;
};

const NetworkFilter = ({ handleClose }: SortControlProps) => {
const NetworkFilter = ({
handleClose,
showTokenFiatBalance = true,
}: SortControlProps) => {
const t = useI18nContext();
const dispatch = useDispatch();
const chainId = useSelector(getCurrentChainId);
Expand Down Expand Up @@ -121,20 +125,22 @@ const NetworkFilter = ({ handleClose }: SortControlProps) => {
>
{t('popularNetworks')}
</Text>
<Text
variant={TextVariant.bodySmMedium}
color={TextColor.textAlternative}
data-testid="network-filter-all__total"
>
<UserPreferencedCurrencyDisplay
value={selectedAccountBalanceForAllNetworks}
type="PRIMARY"
ethNumberOfDecimals={4}
hideTitle
showFiat
isAggregatedFiatOverviewBalance
/>
</Text>
{showTokenFiatBalance && (
<Text
variant={TextVariant.bodySmMedium}
color={TextColor.textAlternative}
data-testid="network-filter-all__total"
>
<UserPreferencedCurrencyDisplay
value={selectedAccountBalanceForAllNetworks}
type="PRIMARY"
ethNumberOfDecimals={4}
hideTitle
showFiat
isAggregatedFiatOverviewBalance
/>
</Text>
)}
</Box>
<Box display={Display.Flex} alignItems={AlignItems.center}>
<InfoTooltip
Expand Down Expand Up @@ -191,14 +197,16 @@ const NetworkFilter = ({ handleClose }: SortControlProps) => {
variant={TextVariant.bodySmMedium}
color={TextColor.textAlternative}
>
<UserPreferencedCurrencyDisplay
value={selectedAccountBalance}
type="PRIMARY"
ethNumberOfDecimals={4}
hideTitle
showFiat
isAggregatedFiatOverviewBalance
/>
{showTokenFiatBalance && (
<UserPreferencedCurrencyDisplay
value={selectedAccountBalance}
type="PRIMARY"
ethNumberOfDecimals={4}
hideTitle
showFiat
isAggregatedFiatOverviewBalance
/>
)}
</Text>
</Box>
<AvatarNetwork
Expand Down
25 changes: 7 additions & 18 deletions ui/components/app/assets/nfts/nft-grid/nft-grid.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import React from 'react';
import { useSelector } from 'react-redux';
import { Hex } from '@metamask/utils';
import { toHex } from '@metamask/controller-utils';
import {
AlignItems,
Display,
Expand All @@ -12,26 +12,20 @@ import { getNftImageAlt } from '../../../../../helpers/utils/nfts';
import { NftItem } from '../../../../multichain/nft-item';
import { NFT } from '../../../../multichain/asset-picker-amount/asset-picker-modal/types';
import {
getCurrentNetwork,
getIpfsGateway,
getNftIsStillFetchingIndication,
} from '../../../../../selectors';
import useGetAssetImageUrl from '../../../../../hooks/useGetAssetImageUrl';
import { getImageForChainId } from '../../../../../selectors/multichain';
import { getNetworkConfigurationsByChainId } from '../../../../../../shared/modules/selectors/networks';
import NFTGridItemErrorBoundary from './nft-grid-item-error-boundary';

const NFTGridItem = (props: {
nft: NFT;
onClick: () => void;
privacyMode?: boolean;
currentChain: {
chainId: Hex;
nickname: string;
rpcPrefs?: {
imageUrl: string;
};
};
}) => {
const { nft, onClick, privacyMode, currentChain } = props;
const { nft, onClick, privacyMode } = props;

const { image, imageOriginal } = nft;

Expand All @@ -40,6 +34,7 @@ const NFTGridItem = (props: {
imageOriginal ?? image ?? undefined,
ipfsGateway,
);
const allNetworks = useSelector(getNetworkConfigurationsByChainId);

const isImageHosted =
image?.startsWith('https:') || image?.startsWith('http:');
Expand All @@ -55,8 +50,8 @@ const NFTGridItem = (props: {
nft={nft}
alt={nftImageAlt}
src={nftItemSrc}
networkName={currentChain.nickname}
networkSrc={currentChain.rpcPrefs?.imageUrl}
networkName={allNetworks?.[toHex(nft.chainId)]?.name}
networkSrc={getImageForChainId(toHex(nft.chainId)) || undefined}
onClick={onClick}
isIpfsURL={isIpfsURL}
privacyMode={privacyMode}
Expand All @@ -74,11 +69,6 @@ export default function NftGrid({
handleNftClick: (nft: NFT) => void;
privacyMode?: boolean;
}) {
const currentChain = useSelector(getCurrentNetwork) as {
chainId: Hex;
nickname: string;
rpcPrefs?: { imageUrl: string };
};
const nftsStillFetchingIndication = useSelector(
getNftIsStillFetchingIndication,
);
Expand All @@ -96,7 +86,6 @@ export default function NftGrid({
className="nft-items__image-wrapper"
>
<NFTGridItem
currentChain={currentChain}
nft={nft}
onClick={() => handleNftClick(nft)}
privacyMode={privacyMode}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
import React from 'react';
import { useDispatch, useSelector } from 'react-redux';
import { useI18nContext } from '../../../../../hooks/useI18nContext';
import { getOpenSeaEnabled } from '../../../../../selectors';
import {
getAllChainsToPoll,
getOpenSeaEnabled,
} from '../../../../../selectors';
import {
detectNfts,
setOpenSeaEnabled,
Expand All @@ -14,6 +17,7 @@ export default function NFTsDetectionNoticeNFTsTab() {
const t = useI18nContext();
const dispatch = useDispatch();
const isDisplayNFTMediaToggleEnabled = useSelector(getOpenSeaEnabled);
const allChainIds = useSelector(getAllChainsToPoll);

return (
<BannerAlert
Expand All @@ -28,7 +32,7 @@ export default function NFTsDetectionNoticeNFTsTab() {
// Show toast
dispatch(setShowNftDetectionEnablementToast(true));
// dispatch action to detect nfts
dispatch(detectNfts());
dispatch(detectNfts(allChainIds));
}}
>
{
Expand Down
11 changes: 10 additions & 1 deletion ui/components/app/assets/nfts/nfts-tab/nfts-tab.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ const NFTS = [
image:
'https://lh3.googleusercontent.com/BdxvLseXcfl57BiuQcQYdJ64v-aI8din7WPk0Pgo3qQFhAUH-B6i-dCqqc_mCkRIzULmwzwecnohLhrcH8A9mpWIZqA7ygc52Sr81hE',
standard: 'ERC1155',
chainId: '1',
},
{
address: '0x495f947276749Ce646f68AC8c248420045cb7b5e',
Expand All @@ -54,6 +55,7 @@ const NFTS = [
image:
'https://lh3.googleusercontent.com/H7VrxaalZv4PF1B8U7ADuc8AfuqTVyzmMEDQ5OXKlx0Tqu5XiwsKYj4j_pAF6wUJjLMQbSN_0n3fuj84lNyRhFW9hyrxqDfY1IiQEQ',
standard: 'ERC1155',
chainId: '1',
},
{
address: '0x495f947276749Ce646f68AC8c248420045cb7b5e',
Expand All @@ -72,6 +74,7 @@ const NFTS = [
image:
'https://lh3.googleusercontent.com/CHNTSlKB_Gob-iwTq8jcag6XwBkTqBMLt_vEKeBv18Q4AoPFAEPceqK6mRzkad2s5djx6CT5zbGQwDy81WwtNzViK5dQbG60uAWv',
standard: 'ERC1155',
chainId: '1',
},
{
address: '0x495f947276749Ce646f68AC8c248420045cb7b5e',
Expand All @@ -89,6 +92,7 @@ const NFTS = [
image:
'https://lh3.googleusercontent.com/4jfPi-nQNWCUXD5qVNVWX7LX2UufU_elEJcvICFlsTdcBXv70asnDEOlI8oKECZxlXq1wseeIXMwmP5tLyOUxMKk',
standard: 'ERC1155',
chainId: '1',
},
{
address: '0x495f947276749Ce646f68AC8c248420045cb7b5e',
Expand All @@ -106,6 +110,7 @@ const NFTS = [
image:
'https://lh3.googleusercontent.com/BdxvLseXcfl57BiuQcQYdJ64v-aI8din7WPk0Pgo3qQFhAUH-B6i-dCqqc_mCkRIzULmwzwecnohLhrcH8A9mpWIZqA7ygc52Sr81hE',
standard: 'ERC1155',
chainId: '1',
},
{
address: '0xDc7382Eb0Bc9C352A4CbA23c909bDA01e0206414',
Expand All @@ -114,6 +119,7 @@ const NFTS = [
description: null,
image: 'ipfs://QmTSZUNt8AKyDabkyXXXP4oHWDnaVXgNdXoJGEyaYzLbeL',
standard: 'ERC721',
chainId: '1',
},
{
address: '0xDc7382Eb0Bc9C352A4CbA23c909bDA01e0206414',
Expand All @@ -122,6 +128,7 @@ const NFTS = [
description: null,
image: 'ipfs://QmTSZUNt8AKyDabkyXXXP4oHWDnaVXgNdXoJGEyaYzLbeL',
standard: 'ERC721',
chainId: '1',
},
{
address: '0xDc7382Eb0Bc9C352A4CbA23c909bDA01e0206414',
Expand All @@ -130,6 +137,7 @@ const NFTS = [
description: null,
image: 'ipfs://QmTSZUNt8AKyDabkyXXXP4oHWDnaVXgNdXoJGEyaYzLbeL',
standard: 'ERC721',
chainId: '1',
},
];

Expand All @@ -142,7 +150,7 @@ const ACCOUNT_1 = '0x123';
const ACCOUNT_2 = '0x456';
const setUseNftDetectionStub = jest.fn();
const setDisplayNftMediaStub = jest.fn();

const setPreferenceStub = jest.fn();
const render = ({
nftContracts = [],
nfts = [],
Expand Down Expand Up @@ -219,6 +227,7 @@ describe('NFT Items', () => {
updateNftDropDownState: updateNftDropDownStateStub,
setUseNftDetection: setUseNftDetectionStub,
setOpenSeaEnabled: setDisplayNftMediaStub,
setPreference: setPreferenceStub,
});
const historyPushMock = jest.fn();

Expand Down
Loading
Loading