diff --git a/common/src/resolver/resolver-get-collection.ts b/common/src/resolver/resolver-get-collection.ts index 0eeef741..b351d72f 100644 --- a/common/src/resolver/resolver-get-collection.ts +++ b/common/src/resolver/resolver-get-collection.ts @@ -89,19 +89,26 @@ const resolverGetCollections = async ( return collections; }; -const countCollectionsCache = new Map(); -const resolverCountCollections = async (chainId: number): Promise => { - if (!countCollectionsCache.has(chainId)) { +const resolverGetCollectionsAddresses = async (chainId: number): Promise> => { + const nftsResolver = await resolverGetContract(chainId); + return await nftsResolver.getAddresses(); + +}; + +const collectionsCache = new Map(); +const resolverGetCollectionsCount = async (chainId: number): Promise => { + if (!collectionsCache.has(chainId)) { const nftsResolver = await resolverGetContract(chainId); const countCollections = Number(await nftsResolver.countAddresses()); - countCollectionsCache.set(chainId, countCollections); + collectionsCache.set(chainId, countCollections); } - return countCollectionsCache.get(chainId); + return collectionsCache.get(chainId); }; export { - resolverCountCollections, + resolverGetCollectionsCount, + resolverGetCollectionsAddresses, resolverGetCollections, resolverGetCollection, resolverAreCollections, diff --git a/sveltekit/src/routes/stats/Addresses.svelte b/sveltekit/src/routes/stats/Addresses.svelte index b695d549..847f726a 100644 --- a/sveltekit/src/routes/stats/Addresses.svelte +++ b/sveltekit/src/routes/stats/Addresses.svelte @@ -11,38 +11,55 @@ getAddressOpenAutoMarket, explorerContractUrl } from "@kredeum/common/src/common/config"; - import { resolverCountCollections } from "@kredeum/common/src/resolver/resolver-get-collection"; + import { + resolverGetCollections, + resolverGetCollectionsAddresses, + resolverGetCollectionsCount + } from "@kredeum/common/src/resolver/resolver-get-collection"; /////////////////////////////////////// // /////////////////////////////////////// export let networks: NetworkType[]; /////////////////////////////////////// + let i = 0; let total = 0; let done = 0; - let counts = new Map(); - - const refreshCount = () => { - total = [...counts].reduce((tot, [k, n]) => tot + (n || 0), 0); - done = [...counts].filter((n) => n !== undefined).length; - if (done === networks.length) sortNetworks(); - }; + let refresh = 0; + let collectionsAllCounts: Map = new Map(); + let collectionsAllAddresses: Map> = new Map(); - const countCollections = async (chainId: number): Promise => { - let count = counts.get(chainId); + const collectionsCount = async (chainId: number): Promise => { + let count = collectionsAllCounts.get(chainId); if (count === undefined) { - count = (await resolverCountCollections(chainId)) || 0; - counts.set(chainId, count); + count = (await resolverGetCollectionsCount(chainId)) || 0; + collectionsAllCounts.set(chainId, count); refreshCount(); } return count; }; - let refresh = 0; + const collectionsAddresses = async (chainId: number): Promise> => { + let addrs = collectionsAllAddresses.get(chainId); + if (addrs === undefined) { + addrs = await resolverGetCollectionsAddresses(chainId); + collectionsAllAddresses.set(chainId, addrs); + } + return addrs; + }; + + const refreshCount = () => { + total = [...collectionsAllCounts].reduce((tot, [k, n]) => tot + (n || 0), 0); + done = [...collectionsAllCounts].filter((n) => n !== undefined).length; + if (done === networks.length) sortNetworks(); + }; const sortNetworks = () => { console.log("sortNetworks ~ sortNetworks:", networks); - networks.sort((a: NetworkType, b: NetworkType) => (counts.get(b.chainId) || 0) - (counts.get(a.chainId) || 0)); - refresh++; + networks.sort( + (a: NetworkType, b: NetworkType) => + (collectionsAllCounts.get(b.chainId) || 0) - (collectionsAllCounts.get(a.chainId) || 0) + ); + // refresh++; }; onMount(() => {}); @@ -54,6 +71,7 @@ Chain ID Chain
Name
{done}/{networks.length} Collections
Count
{total} + Collections
Addresses
OpenNFTs
Factory OpenNFTs
Resolver OpenNFTsV4
Template @@ -67,15 +85,24 @@ {network.chainId} {network.chainName} - {#await countCollections(network.chainId)} + {#await collectionsCount(network.chainId)} ... {:then count} - {count} + {++i} + {count} + {:catch} + --- + {/await} + + + {#await collectionsAddresses(network.chainId)} + ... + {:then addrs} + {addrs} {:catch} --- {/await} - {getShortAddress(factoryGetAddress(network.chainId))}