mirror of
https://codeberg.org/secana/Forji.git
synced 2026-06-16 05:13:55 -07:00
fix: don't open a duplicate PR when the reviewer request fails (#53)
This commit is contained in:
parent
4f6803cc03
commit
e9b6be91f5
1 changed files with 23 additions and 13 deletions
|
|
@ -20,6 +20,7 @@ struct PullRequestCreateView: View {
|
|||
@State private var selectedMilestoneID: Int?
|
||||
@State private var selectedAssigneeLogins: Set<String> = []
|
||||
@State private var selectedReviewerLogins: Set<String> = []
|
||||
@State private var createdPRNumber: Int?
|
||||
@Environment(\.dismiss) private var dismiss
|
||||
|
||||
private let prService: PullRequestService?
|
||||
|
|
@ -175,24 +176,33 @@ struct PullRequestCreateView: View {
|
|||
guard let prService else { return }
|
||||
isSubmitting = true
|
||||
do {
|
||||
let trimmedBody = bodyText.trimmingCharacters(in: .whitespacesAndNewlines)
|
||||
let createdPR = try await prService.createPullRequest(
|
||||
owner: owner,
|
||||
repo: repo,
|
||||
title: title.trimmingCharacters(in: .whitespacesAndNewlines),
|
||||
head: headBranch,
|
||||
base: baseBranch,
|
||||
body: trimmedBody.isEmpty ? nil : trimmedBody,
|
||||
labels: selectedLabelIDs.isEmpty ? nil : Array(selectedLabelIDs),
|
||||
milestone: selectedMilestoneID,
|
||||
assignees: selectedAssigneeLogins.isEmpty ? nil : Array(selectedAssigneeLogins),
|
||||
)
|
||||
// Reuse the already-created PR on retry so a failed reviewer request
|
||||
// doesn't open a duplicate PR when the user taps Create again.
|
||||
let prNumber: Int
|
||||
if let existingNumber = createdPRNumber {
|
||||
prNumber = existingNumber
|
||||
} else {
|
||||
let trimmedBody = bodyText.trimmingCharacters(in: .whitespacesAndNewlines)
|
||||
let createdPR = try await prService.createPullRequest(
|
||||
owner: owner,
|
||||
repo: repo,
|
||||
title: title.trimmingCharacters(in: .whitespacesAndNewlines),
|
||||
head: headBranch,
|
||||
base: baseBranch,
|
||||
body: trimmedBody.isEmpty ? nil : trimmedBody,
|
||||
labels: selectedLabelIDs.isEmpty ? nil : Array(selectedLabelIDs),
|
||||
milestone: selectedMilestoneID,
|
||||
assignees: selectedAssigneeLogins.isEmpty ? nil : Array(selectedAssigneeLogins),
|
||||
)
|
||||
createdPRNumber = createdPR.number
|
||||
prNumber = createdPR.number
|
||||
}
|
||||
if !selectedReviewerLogins.isEmpty {
|
||||
do {
|
||||
try await prService.requestReviewers(
|
||||
owner: owner,
|
||||
repo: repo,
|
||||
index: createdPR.number,
|
||||
index: prNumber,
|
||||
reviewers: Array(selectedReviewerLogins),
|
||||
)
|
||||
} catch {
|
||||
|
|
|
|||
Loading…
Reference in a new issue