Skip to content

Commit 0c84428

Browse files
committed
fix: support stocks in token import flow
1 parent 4f97a52 commit 0c84428

3 files changed

Lines changed: 71 additions & 1 deletion

File tree

app/components/UI/Trending/hooks/useTrendingSearch/useTrendingSearch.test.ts

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -314,6 +314,71 @@ describe('useTrendingSearch', () => {
314314
});
315315
});
316316

317+
describe('includeStocks option', () => {
318+
const mockSearchResultsWithRwa = [
319+
...mockSearchResults,
320+
{
321+
assetId: 'eip155:1/erc20:0xrwa' as CaipChainId,
322+
symbol: 'AAPL',
323+
name: 'Apple Stock',
324+
decimals: 18,
325+
price: '150',
326+
aggregatedUsdVolume: 200000,
327+
marketCap: 2000000000,
328+
pricePercentChange1d: '0.5',
329+
rwaData: { instrumentType: 'equity' },
330+
},
331+
];
332+
333+
it('filters out items with rwaData by default (includeStocks: false)', async () => {
334+
mockUseSearchRequest.mockReturnValue({
335+
results: mockSearchResultsWithRwa,
336+
isLoading: false,
337+
error: null,
338+
search: jest.fn(),
339+
});
340+
341+
const { result } = renderHookWithProvider(() =>
342+
useTrendingSearch({ searchQuery: 'USDC' }),
343+
);
344+
345+
jest.advanceTimersByTime(200);
346+
347+
await waitFor(() => {
348+
expect(result.current.data).not.toEqual(
349+
expect.arrayContaining([expect.objectContaining({ symbol: 'AAPL' })]),
350+
);
351+
expect(result.current.data).toEqual(
352+
expect.arrayContaining([expect.objectContaining({ symbol: 'USDC' })]),
353+
);
354+
});
355+
});
356+
357+
it('includes items with rwaData when includeStocks is true', async () => {
358+
mockUseSearchRequest.mockReturnValue({
359+
results: mockSearchResultsWithRwa,
360+
isLoading: false,
361+
error: null,
362+
search: jest.fn(),
363+
});
364+
365+
const { result } = renderHookWithProvider(() =>
366+
useTrendingSearch({ searchQuery: 'USDC', includeStocks: true }),
367+
);
368+
369+
jest.advanceTimersByTime(200);
370+
371+
await waitFor(() => {
372+
expect(result.current.data).toEqual(
373+
expect.arrayContaining([
374+
expect.objectContaining({ symbol: 'USDC' }),
375+
expect.objectContaining({ symbol: 'AAPL' }),
376+
]),
377+
);
378+
});
379+
});
380+
});
381+
317382
it('uses search immediately when debounce disabled', async () => {
318383
mockUseSearchRequest.mockReturnValue({
319384
results: mockSearchResults,

app/components/UI/Trending/hooks/useTrendingSearch/useTrendingSearch.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ const useStableReference = <T>(value: T) => {
2929
* @param sortBy - Sort option for trending tokens
3030
* @param chainIds - Chain IDs to filter by
3131
* @param enableDebounce - Whether to debounce (default: true)
32+
* @param includeStocks - When true, items with rwaData are included in results (default: false)
3233
* @returns Trending/search results, loading state, and refetch function
3334
*/
3435
export const useTrendingSearch = (opts?: {
@@ -37,6 +38,7 @@ export const useTrendingSearch = (opts?: {
3738
chainIds?: CaipChainId[] | null;
3839
enableDebounce?: boolean;
3940
includeMarketData?: boolean;
41+
includeStocks?: boolean;
4042
sortTrendingTokensOptions?: {
4143
option: PriceChangeOption;
4244
direction: SortDirection;
@@ -48,6 +50,7 @@ export const useTrendingSearch = (opts?: {
4850
chainIds,
4951
enableDebounce = true,
5052
includeMarketData = true,
53+
includeStocks = false,
5154
sortTrendingTokensOptions = {
5255
option: PriceChangeOption.PriceChange,
5356
direction: SortDirection.Descending,
@@ -105,7 +108,7 @@ export const useTrendingSearch = (opts?: {
105108
);
106109

107110
searchResults
108-
.filter((item) => !item.rwaData)
111+
.filter((item) => includeStocks || !item.rwaData)
109112
.forEach((asset) => {
110113
if (!resultMap.has(asset.assetId)) {
111114
resultMap.set(asset.assetId, {
@@ -133,6 +136,7 @@ export const useTrendingSearch = (opts?: {
133136
trendingResults,
134137
searchResults,
135138
sortTrendingTokensOptions,
139+
includeStocks,
136140
]);
137141

138142
// Loading state: show loading while waiting for results

app/components/Views/AddAsset/components/SearchTokenAutoComplete/SearchTokenAutocomplete.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ const SearchTokenAutocomplete = ({ navigation, selectedChainId }: Props) => {
9292
option: PriceChangeOption.MarketCap,
9393
direction: SortDirection.Descending,
9494
},
95+
includeStocks: true,
9596
});
9697

9798
// Convert API search results to ImportAsset format

0 commit comments

Comments
 (0)