@@ -1651,11 +1651,14 @@ export class GitHubRepository extends Disposable {
16511651 let after : string | null = null ;
16521652 let hasNextPage = false ;
16531653 const ret : IAccount [ ] = [ ] ;
1654+ // Once we fall back to the legacy assignableUsers query, the cursors are not compatible
1655+ // with suggestedActors, so stay on the legacy query for the rest of the pagination.
1656+ let useLegacyAssignableUsers = false ;
16541657
16551658 do {
16561659 try {
1657- let result : { data : AssignableUsersResponse | SuggestedActorsResponse } | undefined ;
1658- if ( schema . GetSuggestedActors ) {
1660+ let result : { data : AssignableUsersResponse | SuggestedActorsResponse | null } | undefined ;
1661+ if ( schema . GetSuggestedActors && ! useLegacyAssignableUsers ) {
16591662 result = await query < SuggestedActorsResponse > ( {
16601663 query : schema . GetSuggestedActors ,
16611664 variables : {
@@ -1687,13 +1690,20 @@ export class GitHubRepository extends Disposable {
16871690 } , true ) ; // we ignore SAML errors here because this query can happen at startup
16881691 }
16891692
1690- if ( result . data . repository === null ) {
1693+ if ( result . data ? .repository === null ) {
16911694 Logger . error ( 'Unexpected null repository when getting assignable users' , this . id ) ;
16921695 return [ ] ;
16931696 }
16941697
16951698 const users = ( result . data as AssignableUsersResponse ) . repository ?. assignableUsers ?? ( result . data as SuggestedActorsResponse ) . repository ?. suggestedActors ;
16961699
1700+ // If we got assignableUsers back (either because we already used the legacy query, or
1701+ // because the legacy fallback kicked in inside query()), the cursor is incompatible with
1702+ // suggestedActors. Stay on the legacy query for subsequent pages.
1703+ if ( ( result . data as AssignableUsersResponse ) . repository ?. assignableUsers ) {
1704+ useLegacyAssignableUsers = true ;
1705+ }
1706+
16971707 ret . push (
16981708 ...( users ?. nodes . map ( node => {
16991709 return parseAccount ( node , this ) ;
0 commit comments