Skip to content

Commit e04b5a7

Browse files
authored
Merge pull request #197 from prefrontalsys/fix/gist-pagination
Fix: paginate gist search to handle 100+ gists
2 parents 3af9191 + 511c98c commit e04b5a7

1 file changed

Lines changed: 20 additions & 9 deletions

File tree

src-tauri/src/services/gist_sync.rs

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff 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

0 commit comments

Comments
 (0)