@@ -92,7 +92,11 @@ export const OperatorFilterProvider: FC<OperatorFilterProviderProp> = ({
92
92
usePaginationFilterState : [ paginationFilter , setPaginationFilter ] ,
93
93
useProfFilterState : [ profFilter , setProfFilter ] ,
94
94
useRarityFilterState : [ rarityFilter , setRarityFilter ] ,
95
- operatorFiltered : useOperatorFiltered ( profFilter , paginationFilter ) ,
95
+ operatorFiltered : useOperatorFiltered (
96
+ profFilter ,
97
+ paginationFilter ,
98
+ rarityFilter ,
99
+ ) ,
96
100
} }
97
101
>
98
102
{ children }
@@ -115,22 +119,25 @@ const generateCustomizedOperInfo = (name: string): OperatorInfo => ({
115
119
const useOperatorFiltered = (
116
120
profFilter : ProfFilter ,
117
121
paginationFilter : PaginationFilter ,
122
+ rarityFilter : RarityFilter ,
118
123
) => {
119
124
// Priority: prof > sub prof > rarity/rarityReverse
120
125
// filterResult init and prof filter about
121
- const filterResult = useProfFilterHandle ( profFilter )
126
+ const profFilterResult = useProfFilterHandle ( profFilter )
122
127
// rarity about
123
-
124
- const dataTotal = filterResult . length
128
+ const rarityFilterResult = rarityFilterHandle ( rarityFilter , profFilterResult )
125
129
// pagination about
126
-
127
130
// filterResult
131
+ const filterResult = paginationFilterHandle (
132
+ paginationFilter ,
133
+ rarityFilterResult ,
134
+ )
128
135
// console.log(filterResult)
129
136
return {
130
137
// return data after being paginated
131
- data : paginationFilterHandle ( paginationFilter , filterResult ) ,
138
+ data : filterResult ,
132
139
meta : {
133
- dataTotal,
140
+ dataTotal : profFilterResult . length ,
134
141
} ,
135
142
}
136
143
}
@@ -217,3 +224,13 @@ const paginationFilterHandle = (
217
224
{ current, size } : PaginationFilter ,
218
225
originData : OperatorInfo [ ] = OPERATORS ,
219
226
) => originData . slice ( 0 , current * size )
227
+
228
+ const rarityFilterHandle = (
229
+ { selectedRarity, reverse } : RarityFilter ,
230
+ originData : OperatorInfo [ ] = OPERATORS ,
231
+ ) =>
232
+ originData
233
+ . filter ( ( { rarity } ) => selectedRarity . includes ( rarity ) )
234
+ . sort ( ( { rarity : rarityA } , { rarity : rarityB } ) =>
235
+ reverse ? rarityA - rarityB : rarityB - rarityA ,
236
+ )
0 commit comments