Skip to content

Commit f8e4a64

Browse files
committed
chore: rm duplicate sort market fn
1 parent f16b704 commit f8e4a64

File tree

2 files changed

+7
-89
lines changed

2 files changed

+7
-89
lines changed
Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,2 @@
1-
export { FilterSelect, FILTER_OPTIONS } from './filter-select';
2-
export type {
3-
FilterSelectProps,
4-
MarketFilter,
5-
FilterOption,
6-
} from './filter-select';
1+
export { FilterSelect } from './filter-select';
2+
export type { FilterSelectProps, MarketFilter } from './filter-select';

ui/pages/perps/market-list/index.tsx

Lines changed: 5 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import {
2121
} from '../../../components/app/perps/mocks';
2222
import type { PerpsMarketData } from '../../../components/app/perps/types';
2323
import { PERPS_MARKET_DETAIL_ROUTE } from '../../../helpers/constants/routes';
24+
import { sortMarkets } from '../utils/sortMarkets';
2425
import { MarketRow, type SortField } from './components/market-row';
2526
import { MarketRowSkeleton } from './components/market-row-skeleton';
2627
import {
@@ -42,85 +43,6 @@ const allMarkets: PerpsMarketData[] = [
4243
...mockHip3Markets,
4344
];
4445

45-
/**
46-
* Sort markets based on field and direction
47-
*
48-
* @param markets - Array of markets to sort
49-
* @param field - Field to sort by
50-
* @param direction - Sort direction (asc/desc)
51-
* @returns Sorted array of markets
52-
*/
53-
const sortMarkets = (
54-
markets: PerpsMarketData[],
55-
field: SortField,
56-
direction: SortDirection,
57-
): PerpsMarketData[] => {
58-
return [...markets].sort((a, b) => {
59-
let comparison = 0;
60-
61-
switch (field) {
62-
case 'volume': {
63-
// Parse volume like "$1.2B", "$850M"
64-
const parseVolume = (vol: string): number => {
65-
const num = parseFloat(vol.replace(/[$,]/gu, ''));
66-
if (vol.includes('B')) {
67-
return num * 1e9;
68-
}
69-
if (vol.includes('M')) {
70-
return num * 1e6;
71-
}
72-
if (vol.includes('K')) {
73-
return num * 1e3;
74-
}
75-
return num;
76-
};
77-
comparison = parseVolume(a.volume) - parseVolume(b.volume);
78-
break;
79-
}
80-
case 'priceChange': {
81-
// Parse change like "+2.84%", "-1.19%"
82-
const parseChange = (change: string): number => {
83-
return parseFloat(change.replace(/[%+]/gu, ''));
84-
};
85-
comparison =
86-
parseChange(a.change24hPercent) - parseChange(b.change24hPercent);
87-
break;
88-
}
89-
case 'openInterest': {
90-
// Parse OI like "$2.5B", "$450M"
91-
const parseOI = (oi: string | undefined): number => {
92-
if (!oi) {
93-
return 0;
94-
}
95-
const num = parseFloat(oi.replace(/[$,]/gu, ''));
96-
if (oi.includes('B')) {
97-
return num * 1e9;
98-
}
99-
if (oi.includes('M')) {
100-
return num * 1e6;
101-
}
102-
if (oi.includes('K')) {
103-
return num * 1e3;
104-
}
105-
return num;
106-
};
107-
comparison = parseOI(a.openInterest) - parseOI(b.openInterest);
108-
break;
109-
}
110-
case 'fundingRate': {
111-
const rateA = a.fundingRate ?? 0;
112-
const rateB = b.fundingRate ?? 0;
113-
comparison = rateA - rateB;
114-
break;
115-
}
116-
default:
117-
comparison = 0;
118-
}
119-
120-
return direction === 'desc' ? -comparison : comparison;
121-
});
122-
};
123-
12446
/**
12547
* Filter markets based on search query
12648
*
@@ -220,11 +142,11 @@ export const MarketListView: React.FC = () => {
220142
}
221143

222144
if (currentSortOption) {
223-
markets = sortMarkets(
145+
markets = sortMarkets({
224146
markets,
225-
currentSortOption.field,
226-
currentSortOption.direction,
227-
);
147+
sortBy: currentSortOption.field,
148+
direction: currentSortOption.direction,
149+
});
228150
}
229151
return markets;
230152
}, [selectedFilter, stockSubFilter, searchQuery, currentSortOption]);

0 commit comments

Comments
 (0)