From f0863b43642494d42a79dc842e8e79798f0d94ae Mon Sep 17 00:00:00 2001 From: Emanuele Cesena Date: Sun, 31 Mar 2024 20:44:11 -0700 Subject: [PATCH] web: fetch product --- web/src/app/products/product-page.tsx | 44 +++++++++++----------- web/src/app/products/products-overview.tsx | 20 +++++----- 2 files changed, 33 insertions(+), 31 deletions(-) diff --git a/web/src/app/products/product-page.tsx b/web/src/app/products/product-page.tsx index 1794b832..e12abbcc 100644 --- a/web/src/app/products/product-page.tsx +++ b/web/src/app/products/product-page.tsx @@ -13,13 +13,15 @@ import { Tile, } from '@carbon/react'; import { formatNumber, formatPercent } from '../utils/format-number'; -import { useLocation, useNavigate, useNavigation } from 'react-router-dom'; +import { useParams, useNavigate, useNavigation } from 'react-router-dom'; import { SideActionBar } from './SideActionBar'; import { getTokenMetadata } from '@solana/spl-token'; import { gray70Hover } from '@carbon/colors'; import { useQuery } from '@tanstack/react-query'; +import { useGlamProgramAccount } from '../glam/glam-data-access'; + export default function ProductPage() { const grayStyle = { color: gray70Hover, @@ -28,20 +30,18 @@ export default function ProductPage() { }; // retrieve the publicKey from the URL - const location = useLocation(); - const path = location.pathname.split('/'); // ['', 'products', 'id (publicKey)'] + let { id } = useParams(); - const { data, isLoading, error } = useQuery({ - queryKey: ['share-class', path], - queryFn: async () => { - const connection = new Connection(clusterApiUrl('devnet')); - const tokenMetadata = await getTokenMetadata( - connection, - new PublicKey(path[2]) - ); - return tokenMetadata; - }, - }); + // fetch the fund, for now we default to 2ex... + const defaultFund = "2exrMpmVboCb57t94KHZWKEv7nrcoa5rQSawE19atsrt"; + let glam = new PublicKey(defaultFund); + try { + glam = new PublicKey(id || defaultFund); + } catch(_e) { + // pass + } + const { account } = useGlamProgramAccount({ glam }); + const data = account.data; const shareClass = { id: data?.symbol, @@ -58,21 +58,23 @@ export default function ProductPage() { // will optimize looping later once we have all the necessary data fees: { management: +( - data?.additionalMetadata?.find((x) => x[0] === 'fee_management')?.[1] ?? + // data?.additionalMetadata?.find((x) => x[0] === 'fee_management')?.[1] ?? 0 ), performance: +( - data?.additionalMetadata?.find( - (x) => x[0] === 'fee_performance' - )?.[1] ?? 0 + // data?.additionalMetadata?.find( + // (x) => x[0] === 'fee_performance' + // )?.[1] ?? + 0 ), subscription: 0.0, redemption: 0.0, }, facts: { - launchDate: data?.additionalMetadata?.find( - (x) => x[0] === 'launch_date' - )?.[1], + launchDate: "", + // launchDate: data?.additionalMetadata?.find( + // (x) => x[0] === 'launch_date' + // )?.[1], shareClassAsset: 'USDC', }, terms: { diff --git a/web/src/app/products/products-overview.tsx b/web/src/app/products/products-overview.tsx index a0f758f4..c3dd99c0 100644 --- a/web/src/app/products/products-overview.tsx +++ b/web/src/app/products/products-overview.tsx @@ -18,7 +18,7 @@ import { useNavigate } from 'react-router-dom'; export default function ProductsOverview() { const rows = [ { - id: 'GXwshLimDZur9PkBL5xhoraE2vMAQdWxMxEYvPqSvx1z', + id: '2exrMpmVboCb57t94KHZWKEv7nrcoa5rQSawE19atsrt', symbol: 'GLAM-A-USDC', nav: 100, aum: 100, @@ -29,7 +29,7 @@ export default function ProductsOverview() { status: 'Disabled', }, { - id: 'GXwshLimDZur9PkBL5xhoraE2vMAQdWxMxEYvPqSvx1z', + id: '2exrMpmVboCb57t94KHZWKEv7nrcoa5rQSawE19atsrt', symbol: 'GLAM-A-USDC', nav: 100, aum: 100, @@ -40,7 +40,7 @@ export default function ProductsOverview() { status: 'Disabled', }, { - id: 'GXwshLimDZur9PkBL5xhoraE2vMAQdWxMxEYvPqSvx1z', + id: '2exrMpmVboCb57t94KHZWKEv7nrcoa5rQSawE19atsrt', symbol: 'GLAM-A-USDC', nav: 100, aum: 100, @@ -51,7 +51,7 @@ export default function ProductsOverview() { status: 'Disabled', }, { - id: 'GXwshLimDZur9PkBL5xhoraE2vMAQdWxMxEYvPqSvx1z', + id: '2exrMpmVboCb57t94KHZWKEv7nrcoa5rQSawE19atsrt', symbol: 'GLAM-A-USDC', nav: 100, aum: 100, @@ -62,7 +62,7 @@ export default function ProductsOverview() { status: 'Disabled', }, { - id: 'GXwshLimDZur9PkBL5xhoraE2vMAQdWxMxEYvPqSvx1z', + id: '2exrMpmVboCb57t94KHZWKEv7nrcoa5rQSawE19atsrt', symbol: 'GLAM-A-USDC', nav: 100, aum: 100, @@ -73,7 +73,7 @@ export default function ProductsOverview() { status: 'Disabled', }, { - id: 'GXwshLimDZur9PkBL5xhoraE2vMAQdWxMxEYvPqSvx1z', + id: '2exrMpmVboCb57t94KHZWKEv7nrcoa5rQSawE19atsrt', symbol: 'GLAM-A-USDC', nav: 100, aum: 100, @@ -84,7 +84,7 @@ export default function ProductsOverview() { status: 'Disabled', }, { - id: 'GXwshLimDZur9PkBL5xhoraE2vMAQdWxMxEYvPqSvx1z', + id: '2exrMpmVboCb57t94KHZWKEv7nrcoa5rQSawE19atsrt', symbol: 'GLAM-A-USDC', nav: 100, aum: 100, @@ -95,7 +95,7 @@ export default function ProductsOverview() { status: 'Disabled', }, { - id: 'GXwshLimDZur9PkBL5xhoraE2vMAQdWxMxEYvPqSvx1z', + id: '2exrMpmVboCb57t94KHZWKEv7nrcoa5rQSawE19atsrt', symbol: 'GLAM-A-USDC', nav: 100, aum: 100, @@ -106,7 +106,7 @@ export default function ProductsOverview() { status: 'Disabled', }, { - id: 'GXwshLimDZur9PkBL5xhoraE2vMAQdWxMxEYvPqSvx1z', + id: '2exrMpmVboCb57t94KHZWKEv7nrcoa5rQSawE19atsrt', symbol: 'GLAM-A-USDC', nav: 100, aum: 100, @@ -117,7 +117,7 @@ export default function ProductsOverview() { status: 'Disabled', }, { - id: 'GXwshLimDZur9PkBL5xhoraE2vMAQdWxMxEYvPqSvx1z', + id: '2exrMpmVboCb57t94KHZWKEv7nrcoa5rQSawE19atsrt', symbol: 'GLAM-A-USDC', nav: 100, aum: 100,