@@ -12,15 +12,11 @@ import {
12
12
useRadioGroup ,
13
13
} from "@chakra-ui/react"
14
14
15
+ import type { CostLeaderboardData } from "@/lib/types"
16
+
15
17
import Emoji from "./Emoji"
16
18
import Text from "./OldText"
17
19
18
- export type TranslationLeaderboardProps = {
19
- monthData : any
20
- quarterData : any
21
- allTimeData : any
22
- }
23
-
24
20
const Button = ( props ) => {
25
21
return (
26
22
< ChakraButton
@@ -82,34 +78,13 @@ const RadioCard = (props) => {
82
78
)
83
79
}
84
80
85
- const filterLeaderboardUsers = ( item ) => {
86
- const username = item . user . username . toLowerCase ( )
87
- const fullName = item . user . fullName ?. toLowerCase ( ) || ""
88
-
89
- const excludedUsernames = new Set ( [
90
- "ethdotorg" ,
91
- "finnish_sandberg" ,
92
- "norwegian_sandberg" ,
93
- "swedish_sandberg" ,
94
- ] )
95
-
96
- return (
97
- ! excludedUsernames . has ( username ) &&
98
- ! username . includes ( "lqs_" ) &&
99
- ! username . includes ( "removed_user" ) &&
100
- ! username . includes ( "aco_" ) &&
101
- ! fullName . includes ( "aco_" ) &&
102
- ! username . includes ( "aco-" ) &&
103
- ! fullName . includes ( "aco-" ) &&
104
- ! username . includes ( "acc_" ) &&
105
- ! fullName . includes ( "acc_" )
106
- )
107
- }
81
+ const sortAndFilterData = ( data : CostLeaderboardData [ ] ) =>
82
+ reverse ( sortBy ( data , ( { totalCosts } ) => totalCosts ) )
108
83
109
- const sortAndFilterData = ( data ) => {
110
- return reverse ( sortBy ( data , ( { user } ) => user . totalCosts ) ) . filter (
111
- filterLeaderboardUsers
112
- )
84
+ type TranslationLeaderboardProps = {
85
+ allTimeData : CostLeaderboardData [ ]
86
+ monthData : CostLeaderboardData [ ]
87
+ quarterData : CostLeaderboardData [ ]
113
88
}
114
89
115
90
const TranslationLeaderboard = ( {
@@ -124,9 +99,9 @@ const TranslationLeaderboard = ({
124
99
)
125
100
126
101
const leaderboardData = {
127
- monthData : sortAndFilterData ( monthData . data ) ,
128
- quarterData : sortAndFilterData ( quarterData . data ) ,
129
- allTimeData : sortAndFilterData ( allTimeData . data ) ,
102
+ monthData : sortAndFilterData ( monthData ) ,
103
+ quarterData : sortAndFilterData ( quarterData ) ,
104
+ allTimeData : sortAndFilterData ( allTimeData ) ,
130
105
}
131
106
132
107
const [ filterAmount , updateFilterAmount ] = useState ( 10 )
@@ -216,11 +191,8 @@ const TranslationLeaderboard = ({
216
191
</ Flex >
217
192
{ leaderboardData [ dateRangeType ]
218
193
. slice ( 0 , filterAmount )
219
- . map ( ( item , idx ) => {
220
- const { user, languages } = item
221
- const sortedLanguages = reverse (
222
- sortBy ( languages , ( { language } ) => language . totalCosts )
223
- )
194
+ . map ( ( item : CostLeaderboardData , idx : number ) => {
195
+ const { username, avatarUrl, totalCosts, langs } = item
224
196
225
197
let emoji : string | null = null
226
198
if ( idx === 0 ) {
@@ -270,12 +242,12 @@ const TranslationLeaderboard = ({
270
242
w = { { base : "30px" , sm : 10 } }
271
243
borderRadius = "50%"
272
244
display = { { base : "none" , s : "block" } }
273
- src = { user . avatarUrl }
245
+ src = { avatarUrl }
274
246
/>
275
247
< Box maxW = { { base : "100px" , sm : "none" } } >
276
- { user . username }
248
+ { username }
277
249
< Text m = { 0 } display = "block" fontSize = "sm" opacity = "0.6" >
278
- { sortedLanguages [ 0 ] . language . name }
250
+ { langs [ 0 ] }
279
251
</ Text >
280
252
</ Box >
281
253
</ Flex >
@@ -287,7 +259,7 @@ const TranslationLeaderboard = ({
287
259
fontSize = "2xl"
288
260
text = { ":writing:" }
289
261
/>
290
- { user . totalCosts }
262
+ { totalCosts }
291
263
</ Flex >
292
264
</ Flex >
293
265
)
0 commit comments