Skip to content

Commit ffe154f

Browse files
authored
[Collections] Sort packages by name instead of identity (#3599)
* [Collections] Sort packages by name instead of identity Sorting by package identity is not very intuitive and gets confusing for users. rdar://80351736 * Use package identity as default instead of 'unknown'
1 parent bc4722e commit ffe154f

File tree

3 files changed

+11
-5
lines changed

3 files changed

+11
-5
lines changed

Sources/PackageCollections/Model/Package.swift

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -268,3 +268,9 @@ extension PackageCollectionsModel.Package.Version {
268268
self.manifests[self.defaultToolsVersion]
269269
}
270270
}
271+
272+
extension Model.Package {
273+
var displayName: String {
274+
self.latestVersion?.packageName ?? self.reference.identity.description
275+
}
276+
}

Sources/PackageCollections/PackageCollections.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -331,7 +331,7 @@ public struct PackageCollections: PackageCollectionsProtocol {
331331
}
332332

333333
let result = PackageCollectionsModel.PackageSearchResult(
334-
items: packageCollections.sorted { $0.key.identity < $1.key.identity }
334+
items: packageCollections.sorted { $0.value.package.displayName < $1.value.package.displayName }
335335
.map { entry in
336336
.init(package: entry.value.package, collections: Array(entry.value.collections))
337337
}

Sources/PackageCollections/Storage/SQLitePackageCollectionsStorage.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -352,8 +352,8 @@ final class SQLitePackageCollectionsStorage: PackageCollectionsStorage, Closable
352352
}
353353

354354
// FTS results are not sorted by relevance at all (FTS5 supports ORDER BY rank but FTS4 requires additional SQL function)
355-
// Sort by package identity for consistent ordering in results
356-
let result = Model.PackageSearchResult(items: packageCollections.sorted { $0.key < $1.key }.map { entry in
355+
// Sort by package name for consistent ordering in results
356+
let result = Model.PackageSearchResult(items: packageCollections.sorted { $0.value.package.displayName < $1.value.package.displayName }.map { entry in
357357
.init(package: entry.value.package, collections: Array(entry.value.collections))
358358
})
359359
callback(.success(result))
@@ -393,8 +393,8 @@ final class SQLitePackageCollectionsStorage: PackageCollectionsStorage, Closable
393393
}
394394
}
395395

396-
// Sort by package identity for consistent ordering in results
397-
let result = Model.PackageSearchResult(items: packageCollections.sorted { $0.key.identity < $1.key.identity }.map { entry in
396+
// Sort by package name for consistent ordering in results
397+
let result = Model.PackageSearchResult(items: packageCollections.sorted { $0.value.package.displayName < $1.value.package.displayName }.map { entry in
398398
.init(package: entry.value.package, collections: Array(entry.value.collections))
399399
})
400400
callback(.success(result))

0 commit comments

Comments
 (0)