Nft.js
import { useEffect, useCallback } from "react"
import { useMoralisWeb3Api } from "react-moralis"
import { Box, Image, Text } from "@chakra-ui/react";
import CustomContainer from "./CustomContainer"
export default function Nft({ user }) {
const Web3Api = useMoralisWeb3Api();
// declare the async data fetching function
const fetchNFTs = useCallback(async () => {
// get NFTs for current user on Mainnet
const userEthNFTs = await Web3Api.account.getNFTs();
console.log(userEthNFTs);
// get testnet NFTs for user
const testnetNFTs = await Web3Api.Web3API.account.getNFTs({
chain: process.env.CHAIN_NAME,
});
console.log(testnetNFTs);
// get polygon NFTs for address
const options = {
chain: process.env.CHAIN_NAME,
address: user.get('ethAddress'),
};
const polygonNFTs = await Web3Api.account.getNFTs(options);
console.log(polygonNFTs);
}, [Web3Api.Web3API.account, Web3Api.account, user])
useEffect(() => {
setTimeout(() => { fetchNFTs() }, 3000)
}, [fetchNFTs])
return (
<CustomContainer>
<Text>
<Box>xxx</Box>
</Text>
</CustomContainer>
)
// data && data.result.map(e => { console.log(e) })
// return (
// <CustomContainer>
// <Text fontSize="xl" fontWeight="bold">My NFTs</Text>
// {data && data.result.map(nft => (
// <Box key={nft.token_uri} mt="4" px="2" py="2" borderWidth="1px" borderRadius="md">
// {nft.image && <Image alt="img" src={nft.image} />}
// <p>{nft.token_uri}</p>
// </Box>
// ))}
// </CustomContainer>
// )
}
Balance.js
import Moralis from "moralis";
import { useEffect, useState } from "react";
import { Text, Divider } from "@chakra-ui/react";
import { useERC20Balances, useMoralisWeb3Api } from "react-moralis";
import CustomContainer from "./CustomContainer"
export default function Balance({ user }) {
const Web3Api = useMoralisWeb3Api()
const { fetchERC20Balances, data } = useERC20Balances()
const [ethBalance, setEthBalance] = useState(0)
useEffect(() => {
const fetchNativeBalance = async () => {
// ropsten eth rinkeby
const result = await Web3Api.account.getNativeBalance({
chain: process.env.CHAIN_NAME,
address: user.get("ethAddress")
}).catch(e => console.error("err", e))
if (result && result.balance) {
setEthBalance(Moralis.Units.FromWei(result.balance))
} else {
console.log("00000?")
}
}
fetchNativeBalance()
// ropsten eth rinkeby
fetchERC20Balances({
params: {
chain: process.env.CHAIN_NAME,
address: user.get("ethAddress"),
}
})
}, [Web3Api.account, fetchERC20Balances, user])
// console.log(data)
return (
<CustomContainer>
<Text mb="6" fontSize={"xl"} fontWeight="bold">My ERC20 Tokens</Text>
{ethBalance && <Text>π² {ethBalance} <b>ETH</b></Text>}
<Divider></Divider>
{data && data.map(token => (
<div key={token.token_address}>
<Text>π² {Moralis.Units.FromWei(token.balance)}<b>{token.symbol}</b> - <b>{token.token_address}</b></Text>
</div>
))}
</CustomContainer>
)
}