-
Notifications
You must be signed in to change notification settings - Fork 4
/
getAccountNFTs.ts
32 lines (21 loc) · 1.01 KB
/
getAccountNFTs.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import {decodeMetadata, getMetadataAccount} from "../../helper/Metadata.service";
import {clusterApiUrl, Connection, PublicKey} from "@solana/web3.js";
const {TOKEN_PROGRAM_ID} = require('@solana/spl-token');
(async () => {
let publicKey = new PublicKey('BeTs1yXy4JzLSmg674qkBzxoCNhp2KZFTn8qqDgi5mVJ');
let connection = new Connection(clusterApiUrl('mainnet-beta'), 'confirmed');
let response = await connection.getParsedTokenAccountsByOwner(
publicKey,
{
programId: TOKEN_PROGRAM_ID,
},
);
let mints = await Promise.all(response.value
.filter(accInfo => accInfo.account.data.parsed.info.tokenAmount.uiAmount !== 0)
.map(accInfo => getMetadataAccount(accInfo.account.data.parsed.info.mint))
);
let mintPubkeys = mints.map(m => new PublicKey(m));
let multipleAccounts = await connection.getMultipleAccountsInfo(mintPubkeys);
let nftMetadata = multipleAccounts.filter(account => account !== null).map(account => decodeMetadata(account!.data));
console.log(nftMetadata);
})();