@@ -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 = { {
0 commit comments