sidebar: dedupe PR rows by normalized URL identity
This commit is contained in:
parent
afeec2d324
commit
84d07931a5
2 changed files with 51 additions and 1 deletions
|
|
@ -722,8 +722,26 @@ enum SidebarBranchOrdering {
|
|||
}
|
||||
}
|
||||
|
||||
func normalizedReviewURLKey(for url: URL) -> String {
|
||||
guard var components = URLComponents(url: url, resolvingAgainstBaseURL: false) else {
|
||||
return url.absoluteString
|
||||
}
|
||||
|
||||
// Treat URL variants that differ only by query/fragment as the same review item.
|
||||
components.query = nil
|
||||
components.fragment = nil
|
||||
let scheme = components.scheme?.lowercased() ?? ""
|
||||
let host = components.host?.lowercased() ?? ""
|
||||
let port = components.port.map { ":\($0)" } ?? ""
|
||||
var path = components.path
|
||||
if path.hasSuffix("/"), path.count > 1 {
|
||||
path.removeLast()
|
||||
}
|
||||
return "\(scheme)://\(host)\(port)\(path)"
|
||||
}
|
||||
|
||||
func reviewKey(for state: SidebarPullRequestState) -> String {
|
||||
"\(state.label.lowercased())#\(state.number)"
|
||||
"\(state.label.lowercased())#\(state.number)|\(normalizedReviewURLKey(for: state.url))"
|
||||
}
|
||||
|
||||
var orderedKeys: [String] = []
|
||||
|
|
|
|||
|
|
@ -3776,6 +3776,38 @@ final class SidebarBranchOrderingTests: XCTestCase {
|
|||
)
|
||||
}
|
||||
|
||||
func testOrderedUniquePullRequestsTreatsSameNumberAndLabelDifferentUrlsAsDistinct() {
|
||||
let first = UUID()
|
||||
let second = UUID()
|
||||
|
||||
let pullRequests = SidebarBranchOrdering.orderedUniquePullRequests(
|
||||
orderedPanelIds: [first, second],
|
||||
panelPullRequests: [
|
||||
first: pullRequestState(
|
||||
number: 42,
|
||||
label: "PR",
|
||||
url: "https://github.com/manaflow-ai/cmux/pull/42",
|
||||
status: .open
|
||||
),
|
||||
second: pullRequestState(
|
||||
number: 42,
|
||||
label: "PR",
|
||||
url: "https://github.com/manaflow-ai/other-repo/pull/42",
|
||||
status: .open
|
||||
)
|
||||
],
|
||||
fallbackPullRequest: nil
|
||||
)
|
||||
|
||||
XCTAssertEqual(
|
||||
pullRequests.map(\.url.absoluteString),
|
||||
[
|
||||
"https://github.com/manaflow-ai/cmux/pull/42",
|
||||
"https://github.com/manaflow-ai/other-repo/pull/42"
|
||||
]
|
||||
)
|
||||
}
|
||||
|
||||
func testOrderedUniquePullRequestsUsesFallbackWhenNoPanelPullRequestsExist() {
|
||||
let fallback = pullRequestState(
|
||||
number: 11,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue