Algo filter NFT from token selection (#1242)

* algo/bridge_ui - filter out NFTs from token list

* algo/bridge_ui - filter out NFTs from token list
This commit is contained in:
Paul Noel 2022-08-12 13:22:45 +00:00 committed by GitHub
parent d50ef1c28b
commit 696c99f8bb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 28 additions and 24 deletions

View File

@ -746,10 +746,6 @@ const getAlgorandParsedTokenAccounts = async (
dispatch: Dispatch,
nft: boolean
) => {
if (nft) {
// not supported yet
return;
}
dispatch(
nft ? fetchSourceParsedTokenAccountsNFT() : fetchSourceParsedTokenAccounts()
);
@ -763,7 +759,34 @@ const getAlgorandParsedTokenAccounts = async (
.accountInformation(walletAddress)
.do();
const parsedTokenAccounts: ParsedTokenAccount[] = [];
parsedTokenAccounts.push(
for (const asset of accountInfo.assets) {
const assetId = asset["asset-id"];
const amount = asset.amount;
const metadata = await fetchSingleMetadata(assetId, algodClient);
const isNFT: boolean = amount === 1 && metadata.decimals === 0;
if (((nft && isNFT) || (!nft && !isNFT)) && amount > 0) {
parsedTokenAccounts.push(
createParsedTokenAccount(
walletAddress,
assetId.toString(),
amount,
metadata.decimals,
parseFloat(formatUnits(amount, metadata.decimals)),
formatUnits(amount, metadata.decimals).toString(),
metadata.symbol,
metadata.tokenName,
undefined,
false
)
);
}
}
if (nft) {
dispatch(receiveSourceParsedTokenAccountsNFT(parsedTokenAccounts));
return;
}
// The ALGOs account is prepended for the non NFT case
parsedTokenAccounts.unshift(
createParsedTokenAccount(
walletAddress, //publicKey
"0", //asset ID
@ -777,25 +800,6 @@ const getAlgorandParsedTokenAccounts = async (
true
)
);
for (const asset of accountInfo.assets) {
const assetId = asset["asset-id"];
const amount = asset.amount;
const metadata = await fetchSingleMetadata(assetId, algodClient);
parsedTokenAccounts.push(
createParsedTokenAccount(
walletAddress,
assetId.toString(),
amount,
metadata.decimals,
parseFloat(formatUnits(amount, metadata.decimals)),
formatUnits(amount, metadata.decimals).toString(),
metadata.symbol,
metadata.tokenName,
undefined,
false
)
);
}
dispatch(receiveSourceParsedTokenAccounts(parsedTokenAccounts));
} catch (e) {
console.error(e);