-
-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Expand file tree
/
Copy pathRWATokensFullView.tsx
More file actions
88 lines (82 loc) · 2.69 KB
/
Copy pathRWATokensFullView.tsx
File metadata and controls
88 lines (82 loc) · 2.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
import React, { useCallback, useState } from 'react';
import type { TrendingAsset } from '@metamask/assets-controllers';
import TrendingQuickBuy from '../../components/TrendingQuickBuy/TrendingQuickBuy';
import { strings } from '../../../../../../locales/i18n';
import {
PriceChangeOption,
TimeOption,
} from '../../components/TrendingTokensBottomSheet';
import { useRwaTokens } from '../../hooks/useRwaTokens/useRwaTokens';
import { useTokenListFilters } from '../../hooks/useTokenListFilters/useTokenListFilters';
import TokenListPageLayout from '../../components/TokenListPageLayout/TokenListPageLayout';
import { RWA_NETWORKS_LIST } from '../../utils/trendingNetworksList';
import { useABTest } from '../../../../../hooks/useABTest';
import {
EXPLORE_QUICK_BUY_AB_KEY,
EXPLORE_QUICK_BUY_VARIANTS,
EXPLORE_QUICK_BUY_EXPOSURE_METADATA,
} from '../../../../Views/TrendingView/search/abTestConfig';
const RWATokensFullView = () => {
const [quickTradeToken, setQuickTradeToken] = useState<TrendingAsset | null>(
null,
);
const { variant: quickBuyVariant } = useABTest(
EXPLORE_QUICK_BUY_AB_KEY,
EXPLORE_QUICK_BUY_VARIANTS,
EXPLORE_QUICK_BUY_EXPOSURE_METADATA,
);
const filters = useTokenListFilters({
timeOption: TimeOption.TwentyFourHours,
});
const {
data: searchResults,
isLoading,
isLoadingMore,
loadMore,
refetch: refetchStocks,
} = useRwaTokens({
searchQuery: filters.searchQuery || undefined,
chainIds: filters.selectedNetwork,
sortTrendingTokensOptions: {
option:
filters.selectedPriceChangeOption ?? PriceChangeOption.PriceChange,
direction: filters.priceChangeSortDirection,
},
});
const handleRefresh = useCallback(async () => {
filters.setRefreshing(true);
try {
await refetchStocks();
} catch (error) {
console.warn('Failed to refresh stocks:', error);
} finally {
filters.setRefreshing(false);
}
}, [refetchStocks, filters]);
return (
<TokenListPageLayout
title={strings('trending.stocks')}
testID="rwa-tokens-header"
filters={filters}
tokens={searchResults}
searchResults={searchResults}
isLoading={isLoading}
onRefresh={handleRefresh}
allowedNetworks={RWA_NETWORKS_LIST}
onLoadMore={loadMore}
isLoadingMore={isLoadingMore}
onQuickTrade={
quickBuyVariant.showQuickTradeButton ? setQuickTradeToken : undefined
}
quickBuyNode={
<TrendingQuickBuy
token={quickTradeToken}
onClose={() => setQuickTradeToken(null)}
source="explore_stocks"
/>
}
/>
);
};
RWATokensFullView.displayName = 'RWATokensFullView';
export default RWATokensFullView;