native macOS codings agent orchestrator
6
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge pull request #109 from supabitapp/worktree-merged-pr-number

Show merged PR number in worktree row

authored by

khoi and committed by
GitHub
91540b4a 8d79e6d8

+25 -3
+25 -3
supacode/Features/Repositories/Views/WorktreeRow.swift
··· 10 10 let isRunScriptRunning: Bool 11 11 let showsNotificationIndicator: Bool 12 12 let shortcutHint: String? 13 + @Environment(\.openURL) private var openURL 13 14 14 15 var body: some View { 15 16 let showsSpinner = isLoading || taskStatus == .running ··· 26 27 let hasInfo = displayAddedLines != nil || displayRemovedLines != nil 27 28 let pullRequestState = displayPullRequest?.state.uppercased() 28 29 let pullRequestNumber = displayPullRequest?.number 30 + let pullRequestURL = displayPullRequest.flatMap { URL(string: $0.url) } 29 31 let isMerged = pullRequestState == "MERGED" 30 32 let isOpen = pullRequestState == "OPEN" 33 + let mergedHelp = pullRequestURL == nil ? "Pull request merged" : "Open merged pull request on GitHub" 34 + let openHelp = pullRequestURL == nil ? "Pull request open" : "Open pull request on GitHub" 31 35 let mergedColor = Color(red: 137.0 / 255.0, green: 87.0 / 255.0, blue: 229.0 / 255.0) 32 36 let openColor = Color(red: 35.0 / 255.0, green: 134.0 / 255.0, blue: 54.0 / 255.0) 33 37 HStack(alignment: .center) { ··· 74 78 .accessibilityLabel("Run script active") 75 79 } 76 80 if isMerged { 77 - WorktreePullRequestBadge(text: "MERGED", color: mergedColor, help: "Pull request merged") 81 + if let pullRequestNumber { 82 + pullRequestBadge(text: "#\(pullRequestNumber)", color: mergedColor, help: mergedHelp, url: pullRequestURL) 83 + } else { 84 + pullRequestBadge(text: "MERGED", color: mergedColor, help: mergedHelp, url: pullRequestURL) 85 + } 78 86 } else if isOpen { 79 87 if let pullRequestNumber { 80 - WorktreePullRequestBadge(text: "#\(pullRequestNumber)", color: openColor, help: "Pull request open") 88 + pullRequestBadge(text: "#\(pullRequestNumber)", color: openColor, help: openHelp, url: pullRequestURL) 81 89 } else { 82 - WorktreePullRequestBadge(text: "OPEN", color: openColor, help: "Pull request open") 90 + pullRequestBadge(text: "OPEN", color: openColor, help: openHelp, url: pullRequestURL) 83 91 } 84 92 } 85 93 if let shortcutHint { 86 94 ShortcutHintView(text: shortcutHint, color: .secondary) 87 95 } 96 + } 97 + } 98 + 99 + @ViewBuilder 100 + private func pullRequestBadge(text: String, color: Color, help: String, url: URL?) -> some View { 101 + if let url { 102 + Button { 103 + openURL(url) 104 + } label: { 105 + WorktreePullRequestBadge(text: text, color: color, help: help) 106 + } 107 + .buttonStyle(.plain) 108 + } else { 109 + WorktreePullRequestBadge(text: text, color: color, help: help) 88 110 } 89 111 } 90 112 }