33import { useLogger } from "@pythnetwork/app-logger" ;
44import { parseAsString , useQueryState } from "nuqs" ;
55import {
6- type ReactNode ,
76 type ComponentProps ,
87 Suspense ,
98 createContext ,
@@ -12,6 +11,7 @@ import {
1211 use ,
1312} from "react" ;
1413
14+ import { usePriceFeeds } from "../../hooks/use-price-feeds" ;
1515import type { Cluster } from "../../services/pyth" ;
1616import type { Status } from "../../status" ;
1717import { PriceComponentDrawer } from "../PriceComponentDrawer" ;
@@ -32,15 +32,10 @@ type PriceFeedDrawerProviderProps = Omit<
3232
3333type PriceFeed = {
3434 symbol : string ;
35- displaySymbol : string ;
36- description : string ;
37- icon : ReactNode ;
38- feedKey : string ;
3935 score : number | undefined ;
4036 rank : number | undefined ;
4137 status : Status ;
4238 firstEvaluation : Date | undefined ;
43- assetClass : string ;
4439} ;
4540
4641export const PriceFeedDrawerProvider = (
@@ -57,6 +52,7 @@ const PriceFeedDrawerProviderImpl = ({
5752 children,
5853 cluster,
5954} : PriceFeedDrawerProviderProps ) => {
55+ const contextPriceFeeds = usePriceFeeds ( ) ;
6056 const logger = useLogger ( ) ;
6157 const [ selectedSymbol , setSelectedSymbol ] = useQueryState (
6258 "price-feed" ,
@@ -72,10 +68,22 @@ const PriceFeedDrawerProviderImpl = ({
7268 } ,
7369 [ setSelectedSymbol , logger ] ,
7470 ) ;
75- const selectedFeed = useMemo (
76- ( ) => priceFeeds . find ( ( feed ) => feed . symbol === selectedSymbol ) ,
77- [ selectedSymbol , priceFeeds ] ,
78- ) ;
71+ const selectedFeed = useMemo ( ( ) => {
72+ if ( selectedSymbol === "" ) {
73+ return ;
74+ } else {
75+ const feed = priceFeeds . find ( ( feed ) => feed . symbol === selectedSymbol ) ;
76+ const contextFeed = contextPriceFeeds . get ( selectedSymbol ) ;
77+
78+ return feed === undefined || contextFeed === undefined
79+ ? undefined
80+ : {
81+ ...feed ,
82+ ...contextFeed ,
83+ feedKey : contextFeed . key [ cluster ] ,
84+ } ;
85+ }
86+ } , [ selectedSymbol , priceFeeds , contextPriceFeeds , cluster ] ) ;
7987 const handleClose = useCallback ( ( ) => {
8088 updateSelectedSymbol ( "" ) ;
8189 } , [ updateSelectedSymbol ] ) ;
0 commit comments