3
3
import { useLogger } from "@pythnetwork/app-logger" ;
4
4
import { parseAsString , useQueryState } from "nuqs" ;
5
5
import {
6
- type ReactNode ,
7
6
type ComponentProps ,
8
7
Suspense ,
9
8
createContext ,
@@ -12,6 +11,7 @@ import {
12
11
use ,
13
12
} from "react" ;
14
13
14
+ import { usePriceFeeds } from "../../hooks/use-price-feeds" ;
15
15
import type { Cluster } from "../../services/pyth" ;
16
16
import type { Status } from "../../status" ;
17
17
import { PriceComponentDrawer } from "../PriceComponentDrawer" ;
@@ -32,15 +32,10 @@ type PriceFeedDrawerProviderProps = Omit<
32
32
33
33
type PriceFeed = {
34
34
symbol : string ;
35
- displaySymbol : string ;
36
- description : string ;
37
- icon : ReactNode ;
38
- feedKey : string ;
39
35
score : number | undefined ;
40
36
rank : number | undefined ;
41
37
status : Status ;
42
38
firstEvaluation : Date | undefined ;
43
- assetClass : string ;
44
39
} ;
45
40
46
41
export const PriceFeedDrawerProvider = (
@@ -57,6 +52,7 @@ const PriceFeedDrawerProviderImpl = ({
57
52
children,
58
53
cluster,
59
54
} : PriceFeedDrawerProviderProps ) => {
55
+ const contextPriceFeeds = usePriceFeeds ( ) ;
60
56
const logger = useLogger ( ) ;
61
57
const [ selectedSymbol , setSelectedSymbol ] = useQueryState (
62
58
"price-feed" ,
@@ -72,10 +68,22 @@ const PriceFeedDrawerProviderImpl = ({
72
68
} ,
73
69
[ setSelectedSymbol , logger ] ,
74
70
) ;
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 ] ) ;
79
87
const handleClose = useCallback ( ( ) => {
80
88
updateSelectedSymbol ( "" ) ;
81
89
} , [ updateSelectedSymbol ] ) ;
0 commit comments