Skip to content

Commit c3a2cf7

Browse files
alexr00Copilot
andauthored
Fix invalid cursor in assignable users (#8705)
Co-authored-by: Copilot <[email protected]>
1 parent e65d50d commit c3a2cf7

1 file changed

Lines changed: 13 additions & 3 deletions

File tree

src/github/githubRepository.ts

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)