Skip to content

Commit 4c6db0e

Browse files
committed
fix: code review
1 parent 7fea141 commit 4c6db0e

2 files changed

Lines changed: 31 additions & 13 deletions

File tree

app/[lang]/leaderboards/GithubUserList.tsx

Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,9 @@ export default function GithubUserList({t, initialData}: Props): ReactElement {
5959
setIsLoadingTier(true);
6060
try {
6161
const response = await fetch(`${API_USERS_BY_TIER}?tier=${tier}`);
62+
if (!response.ok) {
63+
throw new Error(`HTTP ${response.status}`);
64+
}
6265
const result = await response.json();
6366
if (result.users) {
6467
setTierData(result.users);
@@ -136,19 +139,29 @@ export default function GithubUserList({t, initialData}: Props): ReactElement {
136139
return;
137140
}
138141

139-
const {users} = await fetchRecentList({
140-
pluginId: 'dooboo-github',
141-
take: 20,
142-
cursor,
143-
});
144-
145-
const filteredUsers = users.filter(
146-
(el) => !data.some((existing) => existing.login === el.login),
147-
);
142+
try {
143+
const {users} = await fetchRecentList({
144+
pluginId: 'dooboo-github',
145+
take: 20,
146+
cursor,
147+
});
148148

149-
if (filteredUsers.length > 0) {
150-
setData([...data, ...filteredUsers]);
151-
setCursor(new Date(filteredUsers[filteredUsers.length - 1].createdAt));
149+
let nextCursor: Date | null = null;
150+
setData((prevData) => {
151+
const filteredUsers = users.filter(
152+
(el) => !prevData.some((existing) => existing.login === el.login),
153+
);
154+
if (filteredUsers.length === 0) return prevData;
155+
nextCursor = new Date(
156+
filteredUsers[filteredUsers.length - 1].createdAt,
157+
);
158+
return [...prevData, ...filteredUsers];
159+
});
160+
if (nextCursor) {
161+
setCursor(nextCursor);
162+
}
163+
} catch (error) {
164+
console.error('Failed to fetch more users:', error);
152165
}
153166
}
154167
};
@@ -233,7 +246,7 @@ export default function GithubUserList({t, initialData}: Props): ReactElement {
233246
data={displayData}
234247
onClickRow={(user) => {
235248
const login = user.login;
236-
window.open('https://github.com/' + login);
249+
window.open(`/stats/${login}`, '_blank', 'noopener');
237250
}}
238251
className="p-6 max-[480px]:p-4"
239252
classNames={{

app/[lang]/stats/[login]/SearchTextInput.tsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,11 @@ export default function SearchTextInput({
109109
<button
110110
type="submit"
111111
disabled={isLoading || !login}
112+
aria-label={
113+
isLoading
114+
? t.search || 'Search'
115+
: t.search || 'Search'
116+
}
112117
className={clsx(
113118
'p-2 rounded-full',
114119
'hover:bg-black/10 dark:hover:bg-white/10',

0 commit comments

Comments
 (0)