Skip to content

Commit 57bf65f

Browse files
committed
+ Selection struct * Unchecked when changing version
1 parent bade79f commit 57bf65f

File tree

5 files changed

+23
-10
lines changed

5 files changed

+23
-10
lines changed

Cork/Views/Installation/Install Package.swift

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,14 @@ import SwiftUI
1212

1313
struct AddFormulaView: View
1414
{
15+
struct PackageSelectedToBeInstalled: Identifiable, Equatable, Hashable
16+
{
17+
var id: UUID = .init()
18+
19+
var package: BrewPackage?
20+
var version: String?
21+
}
22+
1523
@Environment(\.dismiss) var dismiss: DismissAction
1624

1725
@State private var packageRequested: String = ""
@@ -21,7 +29,7 @@ struct AddFormulaView: View
2129

2230
@EnvironmentObject var cachedDownloadsTracker: CachedPackagesTracker
2331

24-
@State private var foundPackageSelection: BrewPackage?
32+
@State private var foundPackageSelection: PackageSelectedToBeInstalled?
2533

2634
@ObservedObject var searchResultTracker: SearchResultTracker = .init()
2735
@ObservedObject var installationProgressTracker: InstallationProgressTracker = .init()

Cork/Views/Installation/Reusables/Search Result Row.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@ struct SearchResultRow: View, Sendable
243243
}
244244
}
245245
}
246-
.tag(searchedForPackage)
246+
.tag(AddFormulaView.PackageSelectedToBeInstalled(package: searchedForPackage, version: selectedVersion.isEmpty ? nil : selectedVersion))
247247
.task
248248
{
249249
if showDescriptionsInSearchResults

Cork/Views/Installation/Sub-Views/Initial.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ struct InstallationInitialView: View
2929

3030
@Binding var packageRequested: String
3131

32-
@Binding var foundPackageSelection: BrewPackage?
32+
@Binding var foundPackageSelection: AddFormulaView.PackageSelectedToBeInstalled?
3333

3434
@ObservedObject var installationProgressTracker: InstallationProgressTracker
3535

@@ -101,7 +101,7 @@ struct InstallationInitialView: View
101101
{
102102
PreviewPackageButtonWithCustomAction
103103
{
104-
guard let packageToPreview: BrewPackage = foundPackageSelection else
104+
guard let packageToPreview: BrewPackage = foundPackageSelection?.package else
105105
{
106106
AppConstants.shared.logger.error("Could not retrieve top package to preview")
107107

@@ -118,7 +118,7 @@ struct InstallationInitialView: View
118118
{
119119
Button
120120
{
121-
guard let packageToInstall: BrewPackage = foundPackageSelection else
121+
guard let packageToInstall: BrewPackage = foundPackageSelection?.package else
122122
{
123123
AppConstants.shared.logger.error("Could not retrieve top package to install")
124124

Cork/Views/Installation/Sub-Views/Presenting Search Results.swift

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,11 @@ import ButtonKit
1111

1212
struct PresentingSearchResultsView: View
1313
{
14+
enum PackageInstallationInitializationError: Error
15+
{
16+
case couldNotStartInstallProcessWithPackage(package: BrewPackage?)
17+
}
18+
1419
@Environment(\.dismiss) var dismiss: DismissAction
1520
@Environment(\.openWindow) var openWindow: OpenWindowAction
1621

@@ -19,7 +24,7 @@ struct PresentingSearchResultsView: View
1924
@ObservedObject var searchResultTracker: SearchResultTracker
2025

2126
@Binding var packageRequested: String
22-
@Binding var foundPackageSelection: BrewPackage?
27+
@Binding var foundPackageSelection: AddFormulaView.PackageSelectedToBeInstalled?
2328

2429
@Binding var packageInstallationProcessStep: PackageInstallationProcessSteps
2530

@@ -121,7 +126,7 @@ struct PresentingSearchResultsView: View
121126
{
122127
PreviewPackageButtonWithCustomAction
123128
{
124-
guard let selectedPackage = foundPackageSelection else
129+
guard let selectedPackage = foundPackageSelection?.package else
125130
{
126131
AppConstants.shared.logger.error("Failed to preview package")
127132

@@ -153,7 +158,7 @@ struct PresentingSearchResultsView: View
153158
// This has to be an AsyncButton so it shakes
154159
AsyncButton
155160
{
156-
guard let packageToInstall = foundPackageSelection else
161+
guard let packageToInstall = foundPackageSelection?.package else
157162
{
158163
throw PackageInstallationInitializationError.couldNotStartInstallProcessWithPackage(package: nil)
159164
}

Tests/Cork Itself/Setup/Top Packages.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,11 @@ struct TestTopPackageHandling
3939
// MARK: - Confirm the top packages are sorted correctly
4040
mockedTopPackageTracker.sortTopPackagesBy = .mostDownloads
4141

42-
#expect(mockedTopPackageTracker.sortedTopFormulae[0].packageDownloads > mockedTopPackageTracker.sortedTopFormulae[1].packageDownloads)
42+
#expect(mockedTopPackageTracker.sortedTopFormulae[0].downloadCount ?? 0 > mockedTopPackageTracker.sortedTopFormulae[1].downloadCount ?? 0)
4343

4444
mockedTopPackageTracker.sortTopPackagesBy = .fewestDownloads
4545

46-
#expect(mockedTopPackageTracker.sortedTopFormulae[0].packageDownloads < mockedTopPackageTracker.sortedTopFormulae[1].packageDownloads)
46+
#expect(mockedTopPackageTracker.sortedTopFormulae[0].downloadCount ?? 0 < mockedTopPackageTracker.sortedTopFormulae[1].downloadCount ?? 0)
4747

4848
mockedTopPackageTracker.sortTopPackagesBy = .mostDownloads
4949
}

0 commit comments

Comments
 (0)