File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -221,22 +221,33 @@ impl GistSyncService {
221221
222222 /// Find existing sync gist or create a new one
223223 pub async fn find_or_create_gist ( & self , token : & str ) -> Result < ( String , String ) > {
224- // Search user's gists for our sync gist
225- let url = format ! ( "{}/gists?per_page=100" , self . api_base) ;
226- let response = self
227- . client
228- . get ( & url)
229- . headers ( self . auth_headers ( token) )
230- . send ( )
231- . await ?;
224+ // Search user's gists for our sync gist (paginated — GitHub caps at 100 per page)
225+ let mut page = 1u32 ;
226+ loop {
227+ let url = format ! ( "{}/gists?per_page=100&page={}" , self . api_base, page) ;
228+ let response = self
229+ . client
230+ . get ( & url)
231+ . headers ( self . auth_headers ( token) )
232+ . send ( )
233+ . await ?;
234+
235+ if !response. status ( ) . is_success ( ) {
236+ break ;
237+ }
232238
233- if response. status ( ) . is_success ( ) {
234239 let gists: Vec < GistResponse > = response. json ( ) . await ?;
240+ if gists. is_empty ( ) {
241+ break ;
242+ }
243+
235244 for gist in & gists {
236245 if gist. description . as_deref ( ) == Some ( GIST_DESCRIPTION ) {
237246 return Ok ( ( gist. id . clone ( ) , gist. html_url . clone ( ) ) ) ;
238247 }
239248 }
249+
250+ page += 1 ;
240251 }
241252
242253 // Not found — create a new private gist
You can’t perform that action at this time.
0 commit comments