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