@@ -33,33 +33,42 @@ export async function processDiscussions(githubClient: GithubDiscussionClient) {
3333 const discussionCategoryIDList : string [ ] = await githubClient . getAnswerableDiscussionCategoryIDs ( ) ;
3434
3535 for ( const discussionCategoryID of discussionCategoryIDList ) {
36- const discussions = await githubClient . getDiscussionsMetaData ( discussionCategoryID ) ;
37- for ( const discussion of discussions . edges ! ) {
38- var discussionId = discussion ?. node ?. id ? discussion ?. node ?. id : "" ;
39- var discussionNum = discussion ?. node ?. number ? discussion . node . number : 0 ;
40- core . debug ( `Processing discussionId: ${ discussionId } with number: ${ discussionNum } and bodyText: ${ discussion ?. node ?. bodyText } ` ) ;
41- if ( discussionId === "" || discussionNum === 0 ) {
42- core . warning ( `Can not proceed checking discussion, discussionId is null!` ) ;
43- continue ;
44- }
45- else if ( discussion ?. node ?. locked && CLOSE_LOCKED_DISCUSSIONS ) {
46- core . info ( `Discussion ${ discussionId } is locked, closing it as resolved` ) ;
47- githubClient . closeDiscussionAsResolved ( discussionId ) ;
48- continue ;
49- }
50- else if ( discussion ?. node ?. answer != null && CLOSE_ANSWERED_DISCUSSIONS ) {
51- core . info ( `Discussion ${ discussionId } is already answered, so closing it as resolved.` ) ;
52- githubClient . closeDiscussionAsResolved ( discussionId ) ;
53- continue ;
54- }
55- else if ( discussion ?. node ?. closed ) {
56- core . debug ( `Discussion ${ discussionId } is closed, so no action needed.` ) ;
57- continue ;
58- }
59- else {
60- await processComments ( discussion ! , githubClient ) ;
36+ const pageSize = 50 ;
37+ let hasNextPage = true ;
38+ let afterCursor : string | null = null ;
39+
40+ while ( hasNextPage ) {
41+ const discussions = await githubClient . getDiscussionsMetaData ( discussionCategoryID , pageSize , afterCursor ! ) ;
42+ hasNextPage = discussions . pageInfo . hasNextPage ;
43+ afterCursor = discussions . pageInfo . endCursor ! ;
44+
45+ for ( const discussion of discussions . edges ! ) {
46+ var discussionId = discussion ?. node ?. id ? discussion ?. node ?. id : "" ;
47+ var discussionNum = discussion ?. node ?. number ? discussion . node . number : 0 ;
48+ core . debug ( `Processing discussionId: ${ discussionId } with number: ${ discussionNum } and bodyText: ${ discussion ?. node ?. bodyText } ` ) ;
49+ if ( discussionId === "" || discussionNum === 0 ) {
50+ core . warning ( `Can not proceed checking discussion, discussionId is null!` ) ;
51+ continue ;
52+ }
53+ else if ( discussion ?. node ?. locked && CLOSE_LOCKED_DISCUSSIONS ) {
54+ core . info ( `Discussion ${ discussionId } is locked, closing it as resolved` ) ;
55+ githubClient . closeDiscussionAsResolved ( discussionId ) ;
56+ continue ;
57+ }
58+ else if ( discussion ?. node ?. answer != null && CLOSE_ANSWERED_DISCUSSIONS ) {
59+ core . info ( `Discussion ${ discussionId } is already answered, so closing it as resolved.` ) ;
60+ githubClient . closeDiscussionAsResolved ( discussionId ) ;
61+ continue ;
62+ }
63+ else if ( discussion ?. node ?. closed ) {
64+ core . debug ( `Discussion ${ discussionId } is closed, so no action needed.` ) ;
65+ continue ;
66+ }
67+ else {
68+ await processComments ( discussion ! , githubClient ) ;
69+ }
6170 }
62- } ;
71+ }
6372 }
6473}
6574
0 commit comments