Untitled
user_4748127
plain_text
2 years ago
2.3 kB
7
Indexable
import React, { useState, useEffect } from 'react'; import Web3 from 'web3'; const web3 = new Web3(Web3.givenProvider || 'https://mainnet.infura.io/v3/YOUR_INFURA_API_KEY'); const contractABI = [ /* your contract ABI */ ]; const contractAddress = '0xYourContractAddress'; const referralContract = new web3.eth.Contract(contractABI, contractAddress); const ReferralDashboard = () => { const [userAddress, setUserAddress] = useState(''); const [referrerAddress, setReferrerAddress] = useState(''); const [totalRewards, setTotalRewards] = useState(0); const [levelRewards, setLevelRewards] = useState(Array(7).fill(0)); useEffect(() => { async function loadUserDashboard() { const accounts = await web3.eth.getAccounts(); const currentUserAddress = accounts[0]; if (!currentUserAddress) { alert('Please connect your MetaMask account to view the dashboard.'); return; } setUserAddress(currentUserAddress); const currentReferrerAddress = await referralContract.methods.referrers(currentUserAddress).call(); setReferrerAddress(currentReferrerAddress); const currentTotalRewards = await referralContract.methods.totalRewards(currentUserAddress).call(); setTotalRewards(web3.utils.fromWei(currentTotalRewards, 'ether')); const currentLevelRewards = []; for (let i = 1; i <= 7; i++) { const levelReward = await referralContract.methods.rewards(currentUserAddress, i).call(); currentLevelRewards.push(web3.utils.fromWei(levelReward, 'ether')); } setLevelRewards(currentLevelRewards); } loadUserDashboard(); }, []); return ( <div> <h1>User Dashboard</h1> <p>User Address: {userAddress}</p> <p>Referrer Address: {referrerAddress}</p> <p>Total Referral Rewards: {totalRewards} SMU</p> <p>Level-wise Referral Rewards:</p> <ul> {levelRewards.map((reward, index) => ( <li key={index}>Level {index + 1}: {reward} SMU</li> ))} </ul> </div> ); }; export default ReferralDashboard;
Editor is loading...