Skip to content

Commit 3072027

Browse files
committed
+ Versioned previewing
1 parent fec1774 commit 3072027

File tree

5 files changed

+36
-11
lines changed

5 files changed

+36
-11
lines changed

Cork/CorkApp.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -407,10 +407,10 @@ struct CorkApp: App
407407
.windowResizability(.contentSize)
408408
.defaultPosition(.center)
409409

410-
WindowGroup(id: .previewWindowID, for: BrewPackage.self)
410+
WindowGroup(id: .previewWindowID, for: AddFormulaView.PackageSelectedToBeInstalled.self)
411411
{ $packageToPreview in
412-
PackagePreview(packageToPreview: packageToPreview)
413-
.navigationTitle(packageToPreview?.name ?? "")
412+
PackagePreview(selectedPackageToPreview: packageToPreview)
413+
.navigationTitle(packageToPreview?.package?.name ?? "")
414414
.environmentObject(appDelegate.appState)
415415
}
416416
.windowResizability(.contentSize)

Cork/Views/Installation/Install Package.swift

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

1313
struct AddFormulaView: View
1414
{
15-
struct PackageSelectedToBeInstalled: Identifiable, Equatable, Hashable
15+
struct PackageSelectedToBeInstalled: Identifiable, Equatable, Hashable, Codable
1616
{
1717
var id: UUID
1818

@@ -26,6 +26,32 @@ struct AddFormulaView: View
2626

2727
self.id = package?.id ?? .init()
2828
}
29+
30+
/// Create a package with the relevant version selected, for previewing and installing
31+
func constructPackageOfRelevantVersion() -> BrewPackage?
32+
{
33+
/// First, see if there's a package to construct
34+
guard var newPackage = self.package else
35+
{
36+
/// If not, just return nil and the process will fail
37+
return nil
38+
}
39+
40+
/// Now that we have a package, let's see if there's a specific Homebrew version selected
41+
if let selectedHomebrewVersion = self.version
42+
{
43+
/// If there is a version defined, construct a package that's identical, apart from its Homebrew version
44+
newPackage.versions = .init()
45+
newPackage.homebrewVersion = selectedHomebrewVersion
46+
47+
return newPackage
48+
}
49+
else
50+
{
51+
/// If there's no Homebrew version defined, just return the package itself with no versions
52+
return newPackage
53+
}
54+
}
2955
}
3056

3157
@Environment(\.dismiss) var dismiss: DismissAction

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ struct InstallationInitialView: View
101101
{
102102
PreviewPackageButtonWithCustomAction
103103
{
104-
guard let packageToPreview: BrewPackage = foundPackageSelection?.package else
104+
guard let packageToPreview: AddFormulaView.PackageSelectedToBeInstalled = foundPackageSelection else
105105
{
106106
AppConstants.shared.logger.error("Could not retrieve top package to preview")
107107

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -129,16 +129,15 @@ struct PresentingSearchResultsView: View
129129
{
130130
PreviewPackageButtonWithCustomAction
131131
{
132-
guard let selectedPackage = foundPackageSelection?.package
132+
guard let selectedPackage: AddFormulaView.PackageSelectedToBeInstalled = foundPackageSelection
133133
else
134134
{
135135
AppConstants.shared.logger.error("Failed to preview package")
136136

137137
return
138138
}
139+
139140
openWindow(value: selectedPackage)
140-
141-
AppConstants.shared.logger.debug("Would preview package \(selectedPackage.name)")
142141
}
143142
.disabled(foundPackageSelection == nil)
144143
}

Cork/Views/Package Previews/Package Preview.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,13 @@ import SwiftUI
1010
struct PackagePreview: View
1111
{
1212

13-
let packageToPreview: BrewPackage?
13+
let selectedPackageToPreview: AddFormulaView.PackageSelectedToBeInstalled?
1414

1515
var body: some View
1616
{
17-
if let packageToPreview
17+
if let finalPackageOfRelevantVersion = selectedPackageToPreview?.constructPackageOfRelevantVersion()
1818
{
19-
PackageDetailView(package: packageToPreview)
19+
PackageDetailView(package: finalPackageOfRelevantVersion)
2020
.isPreview()
2121
.fixedSize()
2222
}

0 commit comments

Comments
 (0)