@@ -15,35 +15,57 @@ import {
1515 netWorth ,
1616} from '@/components/MoneyMarket/MoneyMarket.constants' ;
1717import { Heading } from '@/components/ui/heading/heading' ;
18+ import { getContext } from '@/integrations/tanstack-query/root-provider' ;
1819import { sdk } from '@/lib/sdk' ;
19- import { isAbortError } from '@sovryn/slayer-shared ' ;
20+ import { useQuery } from '@tanstack/react-query ' ;
2021import z from 'zod' ;
2122
2223const poolSearchSchema = z . object ( {
2324 offset : z . number ( ) . min ( 0 ) . default ( 0 ) ,
2425 limit : z . number ( ) . min ( 1 ) . max ( 100 ) . default ( 20 ) ,
2526 search : z . string ( ) . default ( '' ) ,
27+ pool : z . string ( ) . default ( 'default' ) ,
2628} ) ;
2729
2830export const Route = createFileRoute ( '/money-market' ) ( {
2931 component : RouteComponent ,
3032 validateSearch : poolSearchSchema ,
31- loaderDeps : ( { search : { offset, limit, search } } ) => ( {
33+ loaderDeps : ( { search : { offset, limit, search, pool } } ) => ( {
3234 offset,
3335 limit,
3436 search,
37+ pool,
3538 } ) ,
36- loader : ( { abortController, deps } ) =>
37- sdk . moneyMarket
38- . listReserves ( {
39- signal : abortController . signal ,
40- query : deps ,
41- } )
42- . catch ( ( e ) => ( isAbortError ( e ) ? null : Promise . reject ( e ) ) ) ,
39+ loader : ( { deps : { pool } } ) => {
40+ const client = getContext ( ) . queryClient ;
41+ client . prefetchQuery ( {
42+ queryKey : [ 'money-market:pools' ] ,
43+ queryFn : ( ) => sdk . moneyMarket . listPools ( ) ,
44+ staleTime : 1000 * 60 * 60 , // 1 hour
45+ } ) ;
46+
47+ client . prefetchQuery ( {
48+ queryKey : [ 'money-market:reserve' , pool || 'default' ] ,
49+ queryFn : ( ) => sdk . moneyMarket . listReserves ( pool || 'default' ) ,
50+ staleTime : 1000 * 60 * 60 , // 1 hour
51+ } ) ;
52+ } ,
4353} ) ;
4454
4555function RouteComponent ( ) {
46- const pools = Route . useLoaderData ( ) ;
56+ const { pool } = Route . useLoaderDeps ( ) ;
57+
58+ // const { data: pools } = useQuery({
59+ // queryKey: ['money-market:pools'],
60+ // queryFn: () => sdk.moneyMarket.listPools(),
61+ // staleTime: 1000 * 60 * 60, // 1 hour
62+ // });
63+
64+ const { data : reserves } = useQuery ( {
65+ queryKey : [ 'money-market:reserve' , pool || 'default' ] ,
66+ queryFn : ( ) => sdk . moneyMarket . listReserves ( pool || 'default' ) ,
67+ staleTime : 1000 * 60 * 60 , // 1 hour
68+ } ) ;
4769
4870 return (
4971 < >
@@ -64,7 +86,7 @@ function RouteComponent() {
6486 < div className = "grid grid-cols-1 2xl:grid-cols-2 2xl:gap-4 space-y-4" >
6587 < div className = "space-y-4" >
6688 < LendPositionsList
67- lendPositions = { ( pools ?. data ?? [ ] ) . map ( ( r ) => r . data ) }
89+ lendPositions = { reserves ?. data ?? [ ] }
6890 supplyBalance = { 100 }
6991 collateralBalance = { 50 }
7092 supplyWeightedApy = { 2.5 }
@@ -78,9 +100,7 @@ function RouteComponent() {
78100 borrowPower = { 1.29 }
79101 supplyWeightedApy = { 0.05 }
80102 />
81- < BorrowAssetsList
82- borrowAssets = { ( pools ?. data ?? [ ] ) . map ( ( r ) => r . data ) }
83- />
103+ < BorrowAssetsList borrowAssets = { reserves ?. data ?? [ ] } />
84104 </ div >
85105 </ div >
86106 </ div >
0 commit comments