From 3f077d19c1541a5f37209bcfc40ceabc4972aa5e Mon Sep 17 00:00:00 2001 From: Raymond Jacobson Date: Fri, 3 Oct 2025 00:25:56 -0700 Subject: [PATCH 1/4] [PE-7054] avoid virtualized artist coin table while not loaded --- .../components/ArtistCoinsTable.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/web/src/pages/artist-coins-launchpad-page/components/ArtistCoinsTable.tsx b/packages/web/src/pages/artist-coins-launchpad-page/components/ArtistCoinsTable.tsx index 7e0a71cb58c..1ad4032b54a 100644 --- a/packages/web/src/pages/artist-coins-launchpad-page/components/ArtistCoinsTable.tsx +++ b/packages/web/src/pages/artist-coins-launchpad-page/components/ArtistCoinsTable.tsx @@ -465,12 +465,14 @@ export const ArtistCoinsTable = ({ searchQuery }: ArtistCoinsTableProps) => { ) } + const isReady = Boolean(mainContentRef?.current) + return ( Date: Fri, 3 Oct 2025 00:34:25 -0700 Subject: [PATCH 2/4] Calculate market cap while waiting for birdeye --- packages/common/src/utils/coinMetrics.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/common/src/utils/coinMetrics.ts b/packages/common/src/utils/coinMetrics.ts index 7c11ddb825b..26bd6474c34 100644 --- a/packages/common/src/utils/coinMetrics.ts +++ b/packages/common/src/utils/coinMetrics.ts @@ -52,16 +52,22 @@ const createMetric = ( } export const createCoinMetrics = (coin: Coin): MetricData[] => { - // Birdeye price may not be available right after launch. Fall back to dynamic bonding curve price if so. + // Birdeye data may not be available right after launch. + // Fall back to dynamic bonding curve data if so. const price = coin.price === 0 ? coin.dynamicBondingCurve.priceUSD : coin.price + const defaultSupply = 1e9 + const marketCap = + coin.marketCap === 0 + ? coin.dynamicBondingCurve.priceUSD * (coin.totalSupply ?? defaultSupply) + : coin.marketCap const potentialMetrics = [ createMetric( formatCurrencyWithSubscript(price), messages.pricePerCoin, coin.priceChange24hPercent ), - createMetric(`$${formatCount(coin.marketCap, 2)}`, messages.marketCap), + createMetric(`$${formatCount(marketCap, 2)}`, messages.marketCap), createMetric( formatCount(coin.holder), messages.uniqueHolders, From 54bc0ef3cc42b2c71137e0184c599b57b9207c14 Mon Sep 17 00:00:00 2001 From: Raymond Jacobson Date: Fri, 3 Oct 2025 01:09:14 -0700 Subject: [PATCH 3/4] Update sdk in create audius app --- packages/create-audius-app/examples/react-hono/package.json | 2 +- packages/create-audius-app/examples/react/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/create-audius-app/examples/react-hono/package.json b/packages/create-audius-app/examples/react-hono/package.json index 5aa43aa72ba..f92a6e27a0e 100644 --- a/packages/create-audius-app/examples/react-hono/package.json +++ b/packages/create-audius-app/examples/react-hono/package.json @@ -13,7 +13,7 @@ }, "dependencies": { "@audius/harmony": "^0.3.5", - "@audius/sdk": "10.0.0", + "@audius/sdk": "11.0.0", "@hono/zod-validator": "^0.2.2", "hono": "^4.6.2", "zod": "^3.23.8" diff --git a/packages/create-audius-app/examples/react/package.json b/packages/create-audius-app/examples/react/package.json index da8b1b5fc32..a96099aadb6 100644 --- a/packages/create-audius-app/examples/react/package.json +++ b/packages/create-audius-app/examples/react/package.json @@ -12,7 +12,7 @@ }, "dependencies": { "@audius/harmony": "^0.3.5", - "@audius/sdk": "10.0.0", + "@audius/sdk": "11.0.0", "react": "^18.3.1", "react-dom": "^18.3.1" }, From af804f5bb738bf771d42d88d37c5ad6ebe884457 Mon Sep 17 00:00:00 2001 From: Raymond Jacobson Date: Fri, 3 Oct 2025 02:15:54 -0700 Subject: [PATCH 4/4] f --- packages/web/src/components/table/Table.tsx | 10 +++++++++- packages/web/src/pages/MainContentContext.tsx | 2 +- .../components/ArtistCoinsTable.tsx | 4 +--- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/packages/web/src/components/table/Table.tsx b/packages/web/src/components/table/Table.tsx index 182d7cc10f5..d4d81726f16 100644 --- a/packages/web/src/components/table/Table.tsx +++ b/packages/web/src/components/table/Table.tsx @@ -3,6 +3,7 @@ import { MouseEvent, useCallback, useEffect, + useLayoutEffect, useMemo, useRef, useState @@ -692,6 +693,13 @@ export const Table = ({ wrapperClassName ]) + // Force the window scroller to update its position + // after the DOM has laid out + const wsRef = useRef(null) + useLayoutEffect(() => { + wsRef.current?.updatePosition() + }, []) + const renderVirtualizedContent = useCallback(() => { return ( {({ onRowsRendered, registerChild: registerListChild }) => ( - + {({ height, registerChild, diff --git a/packages/web/src/pages/MainContentContext.tsx b/packages/web/src/pages/MainContentContext.tsx index 2c0515ee2c6..5c0b9a96ee4 100644 --- a/packages/web/src/pages/MainContentContext.tsx +++ b/packages/web/src/pages/MainContentContext.tsx @@ -30,9 +30,9 @@ export const MainContentContextProvider = memo( value={{ setRef: (node: HTMLDivElement) => { if (node && !ref.current) { - ref.current = node setReady(true) } + ref.current = node }, ref, ready diff --git a/packages/web/src/pages/artist-coins-launchpad-page/components/ArtistCoinsTable.tsx b/packages/web/src/pages/artist-coins-launchpad-page/components/ArtistCoinsTable.tsx index 1ad4032b54a..7e0a71cb58c 100644 --- a/packages/web/src/pages/artist-coins-launchpad-page/components/ArtistCoinsTable.tsx +++ b/packages/web/src/pages/artist-coins-launchpad-page/components/ArtistCoinsTable.tsx @@ -465,14 +465,12 @@ export const ArtistCoinsTable = ({ searchQuery }: ArtistCoinsTableProps) => { ) } - const isReady = Boolean(mainContentRef?.current) - return (