@@ -98,7 +98,17 @@ import SwiftTUI
98
98
throw Error . couldNotFindWorkflow ( availableWorkflows: workflows)
99
99
}
100
100
101
- let selectedSourceType = if reference != nil {
101
+ ActivityIndicator . start ( )
102
+ let repository = try await provider. request (
103
+ APIEndpoint . v1. ciWorkflows. id ( selectedWorkflow. id) . repository. get ( )
104
+ ) . data
105
+
106
+ let pullRequests = try await provider. requestAll (
107
+ APIEndpoint . v1. scmRepositories. id ( repository. id) . pullRequests. get ( )
108
+ ) . flatMap ( \. data)
109
+ ActivityIndicator . stop ( )
110
+
111
+ let selectedSourceType = if reference != nil || pullRequests. isEmpty {
102
112
SourceType . reference
103
113
} else if pullRequestID != nil {
104
114
SourceType . pullRequest
@@ -108,19 +118,11 @@ import SwiftTUI
108
118
109
119
ActivityIndicator . start ( )
110
120
111
- let repository = try await provider. request (
112
- APIEndpoint . v1. ciWorkflows. id ( selectedWorkflow. id) . repository. get ( )
113
- ) . data
114
-
115
121
var selectedGitReference : ScmGitReference ? = nil
116
122
var selectedPullRequest : ScmPullRequest ? = nil
117
123
118
124
switch selectedSourceType {
119
125
case . pullRequest:
120
- let pullRequests = try await provider. requestAll (
121
- APIEndpoint . v1. scmRepositories. id ( repository. id) . pullRequests. get ( )
122
- ) . flatMap ( \. data)
123
-
124
126
ActivityIndicator . stop ( )
125
127
126
128
selectedPullRequest = if let pullRequestID {
@@ -150,7 +152,6 @@ import SwiftTUI
150
152
throw Error . couldNotFindReference ( availableReferences: gitReferences)
151
153
}
152
154
}
153
-
154
155
155
156
ActivityIndicator . start ( )
156
157
_ = try await provider. request ( APIEndpoint . v1. ciBuildRuns. post ( . init(
@@ -263,12 +264,11 @@ extension ScmPullRequest: CustomStringConvertible {
263
264
guard let number = attributes? . number, let title = attributes? . title else {
264
265
return " Unknown "
265
266
}
266
-
267
+
267
268
return " # \( number) : \( title) "
268
269
}
269
270
}
270
271
271
-
272
272
extension APIProvider {
273
273
func requestAll< T: Decodable > ( _ endpoint: Request < T > ) async throws -> [ T ] {
274
274
var results : [ T ] = [ ]
@@ -279,10 +279,14 @@ extension APIProvider {
279
279
}
280
280
}
281
281
282
+ // MARK: - SourceType
283
+
282
284
enum SourceType : CustomStringConvertible , CaseIterable {
283
285
case reference
284
286
case pullRequest
285
287
288
+ // MARK: Internal
289
+
286
290
var description : String {
287
291
switch self {
288
292
case . reference:
0 commit comments