mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-10-30 03:56:23 -05:00 
			
		
		
		
	Chore: Close outdated support / general discussions (#5443)
This commit is contained in:
		
							
								
								
									
										91
									
								
								.github/workflows/repo-maintenance.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										91
									
								
								.github/workflows/repo-maintenance.yml
									
									
									
									
										vendored
									
									
								
							| @@ -107,3 +107,94 @@ jobs: | ||||
|  | ||||
|               await sleep(1000) | ||||
|             } | ||||
|   close-outdated-discussions: | ||||
|     name: 'Close Outdated Discussions' | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|       - uses: actions/github-script@v7 | ||||
|         with: | ||||
|           script: | | ||||
|             function sleep(ms) { | ||||
|               return new Promise(resolve => setTimeout(resolve, ms)); | ||||
|             } | ||||
|  | ||||
|             const CUTOFF_DAYS = 180; | ||||
|             const cutoff = new Date(); | ||||
|             cutoff.setDate(cutoff.getDate() - CUTOFF_DAYS); | ||||
|  | ||||
|             const query = `query( | ||||
|                 $owner:String!, | ||||
|                 $name:String!, | ||||
|                 $supportCategory:ID!, | ||||
|                 $generalCategory:ID!, | ||||
|               ) { | ||||
|               supportDiscussions: repository(owner:$owner, name:$name){ | ||||
|                 discussions( | ||||
|                   categoryId:$supportCategory, | ||||
|                   last:50, | ||||
|                   answered:false, | ||||
|                   states:[OPEN], | ||||
|                 ) { | ||||
|                   nodes { | ||||
|                     id, | ||||
|                     number, | ||||
|                     updatedAt | ||||
|                   } | ||||
|                 }, | ||||
|               }, | ||||
|               generalDiscussions: repository(owner:$owner, name:$name){ | ||||
|                 discussions( | ||||
|                   categoryId:$generalCategory, | ||||
|                   last:50, | ||||
|                   states:[OPEN], | ||||
|                 ) { | ||||
|                   nodes { | ||||
|                     id, | ||||
|                     number, | ||||
|                     updatedAt | ||||
|                   } | ||||
|                 } | ||||
|               } | ||||
|             }`; | ||||
|             const variables = { | ||||
|               owner: context.repo.owner, | ||||
|               name: context.repo.repo, | ||||
|               supportCategory: "DIC_kwDOG1Zs184CBKWK", | ||||
|               generalCategory: "DIC_kwDOG1Zs184CBKWJ" | ||||
|             } | ||||
|             const result = await github.graphql(query, variables); | ||||
|             const combinedDiscussions = [ | ||||
|               ...result.supportDiscussions.discussions.nodes, | ||||
|               ...result.generalDiscussions.discussions.nodes, | ||||
|             ] | ||||
|  | ||||
|             console.log(`Checking ${combinedDiscussions.length} open discussions`); | ||||
|  | ||||
|             for (const discussion of combinedDiscussions) { | ||||
|               if (new Date(discussion.updatedAt) < cutoff) { | ||||
|                 console.log(`Closing outdated discussion #${discussion.number} (${discussion.id}), last updated at ${discussion.updatedAt}`); | ||||
|                 const addCommentMutation = `mutation($discussion:ID!, $body:String!) { | ||||
|                   addDiscussionComment(input:{discussionId:$discussion, body:$body}) { | ||||
|                     clientMutationId | ||||
|                   } | ||||
|                 }`; | ||||
|                 const commentVariables = { | ||||
|                   discussion: discussion.id, | ||||
|                   body: 'This discussion has been automatically closed due to inactivity.', | ||||
|                 } | ||||
|                 await github.graphql(addCommentMutation, commentVariables); | ||||
|  | ||||
|                 const closeDiscussionMutation = `mutation($discussion:ID!, $reason:DiscussionCloseReason!) { | ||||
|                   closeDiscussion(input:{discussionId:$discussion, reason:$reason}) { | ||||
|                     clientMutationId | ||||
|                   } | ||||
|                 }`; | ||||
|                 const closeVariables = { | ||||
|                   discussion: discussion.id, | ||||
|                   reason: "OUTDATED", | ||||
|                 } | ||||
|                 await github.graphql(closeDiscussionMutation, closeVariables); | ||||
|  | ||||
|                 await sleep(1000); | ||||
|               } | ||||
|             } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 shamoon
					shamoon