@@ -223,64 +223,65 @@ public async Task<Page<PullRequestListItemModel>> ReadPullRequests(
223223 item . Reviews = null ;
224224
225225 var checkRuns = item . LastCommit ? . CheckSuites ? . SelectMany ( model => model . CheckRuns ) . ToArray ( ) ;
226+ var statuses = item . LastCommit ? . Statuses ;
226227
227- var hasCheckRuns = checkRuns ? . Any ( ) ?? false ;
228- var hasStatuses = item . LastCommit ? . Statuses ? . Any ( ) ?? false ;
228+ var totalCount = 0 ;
229+ var pendingCount = 0 ;
230+ var successCount = 0 ;
231+ var errorCount = 0 ;
229232
230- if ( ! hasCheckRuns && ! hasStatuses )
233+ if ( checkRuns != null )
231234 {
232- item . Checks = PullRequestChecksState . None ;
235+ totalCount += checkRuns . Length ;
236+
237+ pendingCount += checkRuns . Count ( model => model . Status != CheckStatusState . Completed ) ;
238+
239+ successCount += checkRuns . Count ( model => model . Status == CheckStatusState . Completed &&
240+ model . Conclusion . HasValue &&
241+ ( model . Conclusion == CheckConclusionState . Success ||
242+ model . Conclusion == CheckConclusionState . Neutral ) ) ;
243+ errorCount += checkRuns . Count ( model => model . Status == CheckStatusState . Completed &&
244+ model . Conclusion . HasValue &&
245+ ! ( model . Conclusion == CheckConclusionState . Success ||
246+ model . Conclusion == CheckConclusionState . Neutral ) ) ;
233247 }
234- else
235- {
236- var checksHasFailure = false ;
237- var checksHasCompleteSuccess = true ;
238248
239- if ( hasCheckRuns )
240- {
241- checksHasFailure = checkRuns
242- . Any ( model => model . Conclusion . HasValue
243- && ( model . Conclusion . Value == CheckConclusionState . Failure
244- || model . Conclusion . Value == CheckConclusionState . ActionRequired ) ) ;
249+ if ( statuses != null )
250+ {
251+ totalCount += statuses . Count ;
245252
246- if ( ! checksHasFailure )
247- {
248- checksHasCompleteSuccess = checkRuns
249- . All ( model => model . Conclusion . HasValue
250- && ( model . Conclusion . Value == CheckConclusionState . Success
251- || model . Conclusion . Value == CheckConclusionState . Neutral ) ) ;
252- }
253- }
253+ pendingCount += statuses . Count ( model =>
254+ model . State == StatusState . Pending || model . State == StatusState . Expected ) ;
254255
255- var statusHasFailure = false ;
256- var statusHasCompleteSuccess = true ;
256+ successCount += statuses . Count ( model => model . State == StatusState . Success ) ;
257257
258- if ( ! checksHasFailure && hasStatuses )
259- {
260- statusHasFailure = item . LastCommit
261- . Statuses
262- . Any ( status => status . State == StatusState . Failure
263- || status . State == StatusState . Error ) ;
258+ errorCount += statuses . Count ( model =>
259+ model . State == StatusState . Error || model . State == StatusState . Failure ) ;
260+ }
264261
265- if ( ! statusHasFailure )
266- {
267- statusHasCompleteSuccess =
268- item . LastCommit . Statuses . All ( status => status . State == StatusState . Success ) ;
269- }
270- }
262+ item . ChecksPendingCount = pendingCount ;
263+ item . ChecksSuccessCount = successCount ;
264+ item . ChecksErrorCount = errorCount ;
271265
272- if ( checksHasFailure || statusHasFailure )
273- {
274- item . Checks = PullRequestChecksState . Failure ;
275- }
276- else if ( statusHasCompleteSuccess && checksHasCompleteSuccess )
277- {
278- item . Checks = PullRequestChecksState . Success ;
279- }
280- else
281- {
282- item . Checks = PullRequestChecksState . Pending ;
283- }
266+ if ( totalCount == 0 )
267+ {
268+ item . ChecksSummary = PullRequestChecksSummaryState . None ;
269+ }
270+ else if ( totalCount == pendingCount )
271+ {
272+ item . ChecksSummary = PullRequestChecksSummaryState . Pending ;
273+ }
274+ else if ( totalCount == successCount )
275+ {
276+ item . ChecksSummary = PullRequestChecksSummaryState . Success ;
277+ }
278+ else if ( totalCount == errorCount )
279+ {
280+ item . ChecksSummary = PullRequestChecksSummaryState . Failure ;
281+ }
282+ else
283+ {
284+ item . ChecksSummary = PullRequestChecksSummaryState . Mixed ;
284285 }
285286
286287 item . LastCommit = null ;
0 commit comments