diff --git a/explorer/src/components/account/TokenAccountSection.tsx b/explorer/src/components/account/TokenAccountSection.tsx
index 7e9d23c4c..c10aecb96 100644
--- a/explorer/src/components/account/TokenAccountSection.tsx
+++ b/explorer/src/components/account/TokenAccountSection.tsx
@@ -1,4 +1,9 @@
-import { Account, NFTData, useFetchAccountInfo } from "providers/accounts";
+import {
+ Account,
+ NFTData,
+ TokenProgramData,
+ useFetchAccountInfo,
+} from "providers/accounts";
import {
TokenAccount,
MintAccountInfo,
@@ -20,6 +25,7 @@ import { CoingeckoStatus, useCoinGecko } from "utils/coingecko";
import { displayTimestampWithoutDate } from "utils/date";
import { LoadingCard } from "components/common/LoadingCard";
import { PublicKey } from "@solana/web3.js";
+import isMetaplexNFT from "providers/accounts/utils/isMetaplexNFT";
const getEthAddress = (link?: string) => {
let address = "";
@@ -48,14 +54,11 @@ export function TokenAccountSection({
case "mint": {
const info = create(tokenAccount.info, MintAccountInfo);
- if (
- account.details?.data?.program === "spl-token" &&
- account.details.data.nftData
- ) {
+ if (isMetaplexNFT(account.details?.data, info.decimals)) {
return (
);
diff --git a/explorer/src/pages/AccountDetailsPage.tsx b/explorer/src/pages/AccountDetailsPage.tsx
index e731f05ac..bbbc76d51 100644
--- a/explorer/src/pages/AccountDetailsPage.tsx
+++ b/explorer/src/pages/AccountDetailsPage.tsx
@@ -7,6 +7,7 @@ import {
Account,
ProgramData,
TokenProgramData,
+ useMintAccountInfo,
} from "providers/accounts";
import { StakeAccountSection } from "components/account/StakeAccountSection";
import { TokenAccountSection } from "components/account/TokenAccountSection";
@@ -38,6 +39,7 @@ import { RewardsCard } from "components/account/RewardsCard";
import { MetaplexMetadataCard } from "components/account/MetaplexMetadataCard";
import { NFTHeader } from "components/account/MetaplexNFTHeader";
import { DomainsCard } from "components/account/DomainsCard";
+import isMetaplexNFT from "providers/accounts/utils/isMetaplexNFT";
const IDENTICON_WIDTH = 64;
@@ -159,13 +161,18 @@ export function AccountHeader({
}) {
const { tokenRegistry } = useTokenRegistry();
const tokenDetails = tokenRegistry.get(address);
+ const mintInfo = useMintAccountInfo(address);
const account = info?.data;
const data = account?.details?.data;
const isToken = data?.program === "spl-token" && data?.parsed.type === "mint";
- const isNFT = isToken && data.nftData;
- if (isNFT) {
- return ;
+ if (isMetaplexNFT(data, mintInfo?.decimals)) {
+ return (
+
+ );
}
if (tokenDetails || isToken) {
diff --git a/explorer/src/providers/accounts/index.tsx b/explorer/src/providers/accounts/index.tsx
index 92c5a0b9a..1fc81ea16 100644
--- a/explorer/src/providers/accounts/index.tsx
+++ b/explorer/src/providers/accounts/index.tsx
@@ -251,10 +251,6 @@ async function fetchAccountInfo(
connection
);
- if (!editionInfo.masterEdition && !editionInfo.edition) {
- throw new Error("No edition found");
- }
-
nftData = { metadata: metadata.data, editionInfo };
}
}
diff --git a/explorer/src/providers/accounts/utils/isMetaplexNFT.ts b/explorer/src/providers/accounts/utils/isMetaplexNFT.ts
new file mode 100644
index 000000000..6b3b42380
--- /dev/null
+++ b/explorer/src/providers/accounts/utils/isMetaplexNFT.ts
@@ -0,0 +1,10 @@
+import { ProgramData } from "..";
+
+export default function isMetaplexNFT(data?: ProgramData, decimals?: number) {
+ return (
+ data?.program === "spl-token" &&
+ data?.parsed.type === "mint" &&
+ data?.nftData &&
+ decimals === 0
+ );
+}