-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathBalance.jsx
89 lines (77 loc) · 2.46 KB
/
Balance.jsx
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
import React, { useState, useEffect } from "react";
import { ethers } from "ethers";
import yearnSdk from "../sdk";
import initWallet from "../wallet";
const Balance = () => {
const [loading, setLoading] = useState(false);
const [vitalikBalances, setVitalikBalances] = useState([]);
const [balances, setBalances] = useState([]);
// Just vitalik account to search for tokens
const account = "0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B";
const getVitalikBalances = async () => {
setLoading(true);
// Get all balances for account
setVitalikBalances(await yearnSdk.tokens.balances(account));
setLoading(false);
};
const getYourBalances = async () => {
const wallet = await initWallet();
setLoading(true);
// Get all balances for account
setBalances(await yearnSdk.tokens.balances(await wallet.getAddress()));
setLoading(false);
};
// Helper function to format balance with ethers
const formatBalance = (balance, decimals) => {
return ethers.utils.formatUnits(balance, decimals);
};
useEffect(
() => console.log("VITALIK BALANCES UPDATED", vitalikBalances),
[vitalikBalances]
);
useEffect(() => console.log("YOUR BALANCES UPDATED", balances), [balances]);
return (
<div>
<h2>Balance</h2>
<section>
<p>Get your Balances</p>
<button onClick={getYourBalances} disabled={loading}>
{loading ? "Loading" : "Get your Balances"}
</button>
<p>Your Balances:</p>
{!!balances?.length && (
<div className="scroll-list">
{balances?.map((b) => {
return (
<div key={b.address}>
{b.token.symbol} :{" "}
{formatBalance(b.balance, b.token.decimals)}
</div>
);
})}
</div>
)}
</section>
<section>
<p>Get Vitalik Balances</p>
<button onClick={getVitalikBalances} disabled={loading}>
{loading ? "Loading" : "Get Vitalik Balances"}
</button>
<p>Balances:</p>
{!!vitalikBalances?.length && (
<div className="scroll-list">
{vitalikBalances?.map((b) => {
return (
<div key={b.address}>
{b.token.symbol} :{" "}
{formatBalance(b.balance, b.token.decimals)}
</div>
);
})}
</div>
)}
</section>
</div>
);
};
export default Balance;