4
4
use crate :: {
5
5
config:: NoMergesConfig ,
6
6
db:: issue_data:: IssueData ,
7
- github:: { IssuesAction , IssuesEvent , Label } ,
7
+ github:: { IssuesAction , IssuesEvent , Label , ReportedContentClassifiers } ,
8
8
handlers:: Context ,
9
9
} ;
10
10
use anyhow:: Context as _;
@@ -24,6 +24,9 @@ pub(super) struct NoMergesInput {
24
24
struct NoMergesState {
25
25
/// Hashes of merge commits that have already been mentioned by triagebot in a comment.
26
26
mentioned_merge_commits : HashSet < String > ,
27
+ /// List of all the no_merge comments as GitHub GraphQL NodeId.
28
+ #[ serde( default ) ]
29
+ no_merge_comments : Vec < String > ,
27
30
/// Labels that the bot added as part of the no-merges check.
28
31
#[ serde( default ) ]
29
32
added_labels : Vec < String > ,
@@ -124,10 +127,22 @@ pub(super) async fn handle_input(
124
127
. context ( "failed to remove label" ) ?;
125
128
}
126
129
127
- // FIXME: Minimize prior no_merges comments.
130
+ // Minimize prior no_merges comments.
131
+ for node_id in state. data . no_merge_comments . iter ( ) {
132
+ event
133
+ . issue
134
+ . hide_comment (
135
+ & ctx. github ,
136
+ node_id. as_str ( ) ,
137
+ ReportedContentClassifiers :: Resolved ,
138
+ )
139
+ . await
140
+ . context ( "failed to hide previous merge commit comment" ) ?;
141
+ }
128
142
129
143
// Clear from state.
130
144
state. data . mentioned_merge_commits . clear ( ) ;
145
+ state. data . no_merge_comments . clear ( ) ;
131
146
state. data . added_labels . clear ( ) ;
132
147
state. save ( ) . await ?;
133
148
return Ok ( ( ) ) ;
@@ -202,11 +217,13 @@ pub(super) async fn handle_input(
202
217
. context ( "failed to set no_merges labels" ) ?;
203
218
204
219
// Post comment
205
- event
220
+ let comment = event
206
221
. issue
207
222
. post_comment ( & ctx. github , & message)
208
223
. await
209
224
. context ( "failed to post no_merges comment" ) ?;
225
+
226
+ state. data . no_merge_comments . push ( comment. node_id ) ;
210
227
state. save ( ) . await ?;
211
228
}
212
229
Ok ( ( ) )
0 commit comments