@@ -109,80 +109,48 @@ const enrichStakePool = (stakePools: Cardano.StakePool[], id: Cardano.PoolId, de
109
109
}
110
110
} ;
111
111
112
- // eslint-disable-next-line sonarjs/cognitive-complexity, complexity
112
+ // eslint-disable-next-line sonarjs/cognitive-complexity
113
113
const getSorter = ( sort : QueryStakePoolsArgs [ 'sort' ] ) => {
114
114
if ( ! sort ) return null ;
115
115
116
116
const { field, order } = sort ;
117
-
118
- if ( order === 'asc' ) {
119
- switch ( field ) {
120
- case 'name' :
121
- return ( a : Cardano . StakePool , b : Cardano . StakePool ) => {
122
- const nameA = a . metadata ?. name || EMPTY_TEXT_PLACEHOLDER_ASC_ORDER ;
123
- const nameB = b . metadata ?. name || EMPTY_TEXT_PLACEHOLDER_ASC_ORDER ;
124
- return nameA . localeCompare ( nameB ) ;
125
- } ;
126
- case 'ticker' :
127
- return ( a : Cardano . StakePool , b : Cardano . StakePool ) => {
128
- const tickerA = a . metadata ?. ticker || EMPTY_TEXT_PLACEHOLDER_ASC_ORDER ;
129
- const tickerB = b . metadata ?. ticker || EMPTY_TEXT_PLACEHOLDER_ASC_ORDER ;
130
- return tickerA . localeCompare ( tickerB ) ;
131
- } ;
132
- case 'cost' :
133
- return ( a : Cardano . StakePool , b : Cardano . StakePool ) => Number ( a . cost - b . cost ) ;
134
- case 'margin' :
135
- return ( a : Cardano . StakePool , b : Cardano . StakePool ) => {
136
- const marginA = Cardano . FractionUtils . toNumber ( a . margin ) ;
137
- const marginB = Cardano . FractionUtils . toNumber ( b . margin ) ;
138
- return marginA - marginB ;
139
- } ;
140
- case 'pledge' :
141
- return ( a : Cardano . StakePool , b : Cardano . StakePool ) => Number ( a . pledge - b . pledge ) ;
142
- case 'blocks' :
143
- return ( a : Cardano . StakePool , b : Cardano . StakePool ) =>
144
- ( a . metrics ?. blocksCreated || 0 ) - ( b . metrics ?. blocksCreated || 0 ) ;
145
- case 'liveStake' :
146
- return ( a : Cardano . StakePool , b : Cardano . StakePool ) =>
147
- Number ( ( a . metrics ?. stake . live || BigInt ( 0 ) ) - ( b . metrics ?. stake . live || BigInt ( 0 ) ) ) ;
148
- case 'saturation' :
149
- return ( a : Cardano . StakePool , b : Cardano . StakePool ) =>
150
- ( a . metrics ?. saturation || 0 ) - ( b . metrics ?. saturation || 0 ) ;
151
- }
152
- } else {
153
- switch ( field ) {
154
- case 'name' :
155
- return ( a : Cardano . StakePool , b : Cardano . StakePool ) => {
156
- const nameA = a . metadata ?. name || EMPTY_TEXT_PLACEHOLDER_DESC_ORDER ;
157
- const nameB = b . metadata ?. name || EMPTY_TEXT_PLACEHOLDER_DESC_ORDER ;
158
- return nameB . localeCompare ( nameA ) ;
159
- } ;
160
- case 'ticker' :
161
- return ( a : Cardano . StakePool , b : Cardano . StakePool ) => {
162
- const tickerA = a . metadata ?. ticker || EMPTY_TEXT_PLACEHOLDER_DESC_ORDER ;
163
- const tickerB = b . metadata ?. ticker || EMPTY_TEXT_PLACEHOLDER_DESC_ORDER ;
164
- return tickerB . localeCompare ( tickerA ) ;
165
- } ;
166
- case 'cost' :
167
- return ( a : Cardano . StakePool , b : Cardano . StakePool ) => Number ( b . cost - a . cost ) ;
168
- case 'margin' :
169
- return ( a : Cardano . StakePool , b : Cardano . StakePool ) => {
170
- const marginA = Cardano . FractionUtils . toNumber ( a . margin ) ;
171
- const marginB = Cardano . FractionUtils . toNumber ( b . margin ) ;
172
- return marginB - marginA ;
173
- } ;
174
- case 'pledge' :
175
- return ( a : Cardano . StakePool , b : Cardano . StakePool ) => Number ( b . pledge - a . pledge ) ;
176
- case 'blocks' :
177
- return ( a : Cardano . StakePool , b : Cardano . StakePool ) =>
178
- ( b . metrics ?. blocksCreated || 0 ) - ( a . metrics ?. blocksCreated || 0 ) ;
179
- case 'liveStake' :
180
- return ( a : Cardano . StakePool , b : Cardano . StakePool ) =>
181
- Number ( ( b . metrics ?. stake . live || BigInt ( 0 ) ) - ( a . metrics ?. stake . live || BigInt ( 0 ) ) ) ;
182
- case 'saturation' :
183
- return ( a : Cardano . StakePool , b : Cardano . StakePool ) =>
184
- ( b . metrics ?. saturation || 0 ) - ( a . metrics ?. saturation || 0 ) ;
185
- }
117
+ const asc = order === 'asc' ;
118
+ const placeholder = asc ? EMPTY_TEXT_PLACEHOLDER_ASC_ORDER : EMPTY_TEXT_PLACEHOLDER_DESC_ORDER ;
119
+
120
+ switch ( field ) {
121
+ case 'name' :
122
+ case 'ticker' :
123
+ return ( a : Cardano . StakePool , b : Cardano . StakePool ) => {
124
+ const valueA = a . metadata ?. [ field ] || placeholder ;
125
+ const valueB = b . metadata ?. [ field ] || placeholder ;
126
+ return asc ? valueA . localeCompare ( valueB ) : valueB . localeCompare ( valueA ) ;
127
+ } ;
128
+ case 'cost' :
129
+ return ( a : Cardano . StakePool , b : Cardano . StakePool ) => ( asc ? Number ( a . cost - b . cost ) : Number ( b . cost - a . cost ) ) ;
130
+ case 'margin' :
131
+ return ( a : Cardano . StakePool , b : Cardano . StakePool ) => {
132
+ const marginA = Cardano . FractionUtils . toNumber ( a . margin ) ;
133
+ const marginB = Cardano . FractionUtils . toNumber ( b . margin ) ;
134
+ return asc ? marginA - marginB : marginB - marginA ;
135
+ } ;
136
+ case 'pledge' :
137
+ return ( a : Cardano . StakePool , b : Cardano . StakePool ) =>
138
+ asc ? Number ( a . pledge - b . pledge ) : Number ( b . pledge - a . pledge ) ;
139
+ case 'blocks' :
140
+ return ( a : Cardano . StakePool , b : Cardano . StakePool ) =>
141
+ asc
142
+ ? ( a . metrics ?. blocksCreated || 0 ) - ( b . metrics ?. blocksCreated || 0 )
143
+ : ( b . metrics ?. blocksCreated || 0 ) - ( a . metrics ?. blocksCreated || 0 ) ;
144
+ case 'liveStake' :
145
+ return ( a : Cardano . StakePool , b : Cardano . StakePool ) =>
146
+ asc
147
+ ? Number ( ( a . metrics ?. stake . live || BigInt ( 0 ) ) - ( b . metrics ?. stake . live || BigInt ( 0 ) ) )
148
+ : Number ( ( b . metrics ?. stake . live || BigInt ( 0 ) ) - ( a . metrics ?. stake . live || BigInt ( 0 ) ) ) ;
149
+ case 'saturation' :
150
+ return ( a : Cardano . StakePool , b : Cardano . StakePool ) =>
151
+ asc
152
+ ? ( a . metrics ?. saturation || 0 ) - ( b . metrics ?. saturation || 0 )
153
+ : ( b . metrics ?. saturation || 0 ) - ( a . metrics ?. saturation || 0 ) ;
186
154
}
187
155
188
156
return null ;
0 commit comments