@@ -82,6 +82,25 @@ export default function StockSearchModal({ children }: StockSearchModalProps) {
8282 query : debouncedQuery ,
8383 } ) ;
8484
85+ const filteredStockList = ( stockList || [ ] ) . filter ( ( stock ) => {
86+ const assetType = stock . asset_type ?. toLowerCase ( ) ;
87+ const exchange = ( stock . exchange || "" ) . toUpperCase ( ) ;
88+ const prefix = ( stock . ticker ?. split ( ":" ) [ 0 ] || "" ) . toUpperCase ( ) ;
89+
90+ const US_EXCHANGES = new Set ( [ "NASDAQ" , "NYSE" , "AMEX" ] ) ;
91+ const CN_EXCHANGES = new Set ( [ "SSE" , "SZSE" , "HKEX" ] ) ;
92+ const JP_EXCHANGES = new Set ( [ "TSE" , "JPX" , "TYO" ] ) ;
93+
94+ const isCrypto = assetType === "crypto" || prefix === "CRYPTO" ;
95+ const isUS = US_EXCHANGES . has ( exchange ) || US_EXCHANGES . has ( prefix ) ;
96+ const isCN = CN_EXCHANGES . has ( exchange ) || CN_EXCHANGES . has ( prefix ) ;
97+ const isJP = JP_EXCHANGES . has ( exchange ) || JP_EXCHANGES . has ( prefix ) ;
98+
99+ const isStock = assetType === "stock" ;
100+
101+ return isCrypto || ( isStock && ( isUS || isCN || isJP ) ) ;
102+ } ) ;
103+
85104 return (
86105 < Dialog >
87106 < DialogTrigger asChild > { children } </ DialogTrigger >
@@ -116,17 +135,17 @@ export default function StockSearchModal({ children }: StockSearchModalProps) {
116135 < p className = "p-4 text-center text-neutral-400 text-sm" >
117136 Searching...
118137 </ p >
119- ) : stockList && stockList . length > 0 ? (
138+ ) : filteredStockList && filteredStockList . length > 0 ? (
120139 < div className = "rounded-lg bg-white py-2" >
121- { stockList . map ( ( stock ) => (
140+ { filteredStockList . map ( ( stock ) => (
122141 < StockItem key = { stock . ticker } stock = { stock } />
123142 ) ) }
124143 </ div >
125144 ) : (
126145 query &&
127146 ! isLoading &&
128147 stockList &&
129- stockList . length === 0 && (
148+ filteredStockList . length === 0 && (
130149 < p className = "p-4 text-center text-neutral-400 text-sm" >
131150 No related stocks found
132151 </ p >
0 commit comments