@@ -60,23 +60,20 @@ struct MenuBarExtraMenu: View {
6060 case . sortedAlphabetically:
6161 return filtered. sorted ( by: { $0. name. lowercased ( ) < $1. name. lowercased ( ) } )
6262 case . sortedByBuildTime:
63- return filtered. sorted ( by: { p1, p2 in
64- let r1 = p1. status. lastBuild? . result
65- let r2 = p2. status. lastBuild? . result
63+ return filtered. sorted ( by: { $0. status. lastBuild? . timestamp ?? Date . distantPast >
64+ $1. status. lastBuild? . timestamp ?? Date . distantPast} )
65+ case . sortedByBuildResult:
66+ return filtered. sorted ( by: { p1, p2 in
67+ let r1 = p1. status. lastBuild? . result ?? BuildResult . unknown
68+ let r2 = p2. status. lastBuild? . result ?? BuildResult . unknown
6669 if ( r1 != r2) {
67- if ( r1 == nil ) {
68- return false
69- }
70- else if ( r2 == nil ) {
71- return true
72- }
73- let resultOrder = [
74- BuildResult . failure, BuildResult . success,
75- BuildResult . unknown, BuildResult . other
76- ]
77- return resultOrder. firstIndex ( of: r1!) ! < resultOrder. firstIndex ( of: r2!) !
78- }
79- return p1. status. lastBuild? . timestamp ?? Date . distantFuture > p2. status. lastBuild? . timestamp ?? Date . distantFuture
70+ let resultOrder : [ BuildResult ] = [ . failure, . success, . other, . unknown ]
71+ return ( resultOrder. firstIndex ( of: r1) ?? Int . max) <
72+ ( resultOrder. firstIndex ( of: r2) ?? Int . max)
73+ } else {
74+ return p1. status. lastBuild? . timestamp ?? Date . distantPast >
75+ p2. status. lastBuild? . timestamp ?? Date . distantFuture
76+ }
8077 } )
8178 }
8279 }
0 commit comments