Skip to content

Commit 6fecaaf

Browse files
authored
Merge pull request #8 from mybucks-online/feat/integrate-alchemy
Integrate Alchemy APIs
2 parents bdf26e2 + 804a718 commit 6fecaaf

File tree

16 files changed

+874
-618
lines changed

16 files changed

+874
-618
lines changed

.env.example

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
VITE_INFURA_API_KEY =
2-
VITE_COVALENT_API_KEY =
2+
VITE_ALCHEMY_API_KEY =
33
VITE_TRONGRID_API_KEY =

.github/workflows/main-pipeline.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@ jobs:
4040
- name: Build the project
4141
env:
4242
VITE_INFURA_API_KEY: ${{ secrets.VITE_INFURA_API_KEY }}
43-
VITE_COVALENT_API_KEY: ${{ secrets.VITE_COVALENT_API_KEY }}
4443
VITE_TRONGRID_API_KEY: ${{ secrets.VITE_TRONGRID_API_KEY }}
44+
VITE_ALCHEMY_API_KEY: ${{ secrets.VITE_ALCHEMY_API_KEY }}
4545
run: yarn build
4646
- name: Setup Pages
4747
uses: actions/configure-pages@v4

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ This is a fully open-source project built with React, Vite, and related third-pa
117117
- **ethers**
118118
A standard library for manipulating EVM accounts.
119119

120-
- **@covalenthq/client-sdk**
120+
- **alchemy-sdk**
121121
Provides query functions for massive crypto assets in multiple networks.
122122

123123
- **@sushiswap/default-token-list**

package.json

+1-2
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,9 @@
3030
"preview": "vite preview"
3131
},
3232
"dependencies": {
33-
"@covalenthq/client-sdk": "^1.0.2",
3433
"@sushiswap/default-token-list": "^43.3.0",
34+
"alchemy-sdk": "^3.5.0",
3535
"buffer": "^6.0.3",
36-
"camelcase-keys": "^9.1.3",
3736
"clipboard-copy": "^4.0.1",
3837
"date-fns": "^4.1.0",
3938
"ethers": "^6.13.0",

src/contexts/Store.jsx

+35-10
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,8 @@ const StoreProvider = ({ children }) => {
5858
!hash
5959
? null
6060
: network === NETWORK.EVM
61-
? new EvmAccount(hash, chainId)
62-
: new TronAccount(hash),
61+
? new EvmAccount(hash, chainId)
62+
: new TronAccount(hash),
6363
[hash, network, chainId]
6464
);
6565

@@ -68,26 +68,33 @@ const StoreProvider = ({ children }) => {
6868
const [inMenu, openMenu] = useState(false);
6969
const [showBalances, setShowBalances] = useState(false);
7070

71-
// active token
72-
const [selectedTokenAddress, selectToken] = useState("");
73-
7471
// balances related
7572
const [nativeTokenName, setNativeTokenName] = useState("");
7673
const [nativeTokenBalance, setNativeTokenBalance] = useState(0);
7774
const [tokenBalances, setTokenBalances] = useState([]);
7875
const [nftBalances, setNftBalances] = useState([]);
7976

77+
// transfers history
78+
const [transfers, setTransfers] = useState([]);
79+
8080
// prices related
8181
const [nativeTokenPrice, setNativeTokenPrice] = useState(0);
8282

83+
// active token
84+
const [selectedTokenAddress, selectToken] = useState("");
85+
const token = useMemo(
86+
() => tokenBalances.find((t) => t.address === selectedTokenAddress),
87+
[tokenBalances, selectedTokenAddress]
88+
);
89+
8390
// unique counter that increments regularly
8491
const [tick, setTick] = useState(0);
8592

8693
useEffect(() => {
8794
if (!account) {
8895
return;
8996
}
90-
setNativeTokenName("")
97+
setNativeTokenName("");
9198
setTokenBalances([]);
9299
account.getNetworkStatus().then(() => {
93100
setTick((_tick) => _tick + 1);
@@ -113,6 +120,21 @@ const StoreProvider = ({ children }) => {
113120
};
114121
}, [account]);
115122

123+
useEffect(() => {
124+
if (!selectedTokenAddress) {
125+
setTransfers([]);
126+
return;
127+
}
128+
account
129+
.queryTokenHistory(
130+
token.native ? "" : selectedTokenAddress,
131+
token.decimals
132+
)
133+
.then((result) => {
134+
setTransfers(result);
135+
});
136+
}, [selectedTokenAddress]);
137+
116138
const reset = () => {
117139
setPassword("");
118140
setPasscode("");
@@ -129,6 +151,7 @@ const StoreProvider = ({ children }) => {
129151
setNativeTokenBalance(0);
130152
setTokenBalances([]);
131153
setNftBalances([]);
154+
setTransfers([]);
132155

133156
selectToken("");
134157
};
@@ -149,10 +172,10 @@ const StoreProvider = ({ children }) => {
149172
const result = await account.queryBalances();
150173

151174
if (result) {
152-
setNativeTokenName(result[0]);
153-
setNativeTokenBalance(result[1]);
154-
setNativeTokenPrice(result[2]);
155-
setTokenBalances(result[3]);
175+
setNativeTokenName(result[0].name);
176+
setNativeTokenBalance(result[0].balance);
177+
setNativeTokenPrice(result[0].price);
178+
setTokenBalances(result);
156179

157180
setConnectivity(true);
158181
} else {
@@ -184,11 +207,13 @@ const StoreProvider = ({ children }) => {
184207
nativeTokenBalance,
185208
tokenBalances,
186209
nftBalances,
210+
transfers,
187211
nativeTokenPrice,
188212
tick,
189213
fetchBalances,
190214
selectedTokenAddress,
191215
selectToken,
216+
token,
192217
}}
193218
>
194219
{children}

0 commit comments

Comments
 (0)