otterscan/src/useReverseCache.ts

37 lines
917 B
TypeScript
Raw Normal View History

import { useState, useEffect } from "react";
import { JsonRpcProvider } from "@ethersproject/providers";
2021-10-31 00:08:10 +00:00
import { ProcessedTransaction } from "./types";
2021-10-31 00:10:15 +00:00
import { batchPopulate, ResolvedAddresses } from "./api/address-resolver";
2021-07-08 19:02:42 +00:00
export const useENSCache = (
provider?: JsonRpcProvider,
2021-07-08 19:02:42 +00:00
page?: ProcessedTransaction[]
) => {
2021-10-31 00:10:15 +00:00
const [reverseCache, setReverseCache] = useState<ResolvedAddresses>();
useEffect(() => {
2021-07-08 19:02:42 +00:00
if (!provider || !page) {
return;
}
const addrSet = new Set<string>();
for (const tx of page) {
if (tx.from) {
addrSet.add(tx.from);
}
if (tx.to) {
addrSet.add(tx.to);
}
}
const addresses = Array.from(addrSet);
const reverseResolve = async () => {
2021-10-31 00:06:11 +00:00
const cache = await batchPopulate(provider, addresses);
setReverseCache(cache);
};
reverseResolve();
2021-07-08 19:02:42 +00:00
}, [provider, page]);
return reverseCache;
};