@@ -51,17 +51,23 @@ struct MaintenanceView: View
5151 case problemsFound( problems: [ String ] )
5252 }
5353
54+ @Observable
55+ class SelectedMaintenanceStepsTracker
56+ {
57+ var shouldPurgeCache : Bool = true
58+ var shouldDeleteDownloads : Bool = true
59+ var shouldUninstallOrphans : Bool = true
60+ var shouldPerformHealthCheck : Bool = false
61+ }
62+
5463 @Environment ( \. dismiss) var dismiss : DismissAction
5564
5665 @Environment ( BrewPackagesTracker . self) var brewPackagesTracker : BrewPackagesTracker
5766 @InjectedObservable ( \. appState) var appState : AppState
5867
5968 @State var maintenanceSteps : MaintenanceStage = . ready
6069
61- @State var shouldPurgeCache : Bool = true
62- @State var shouldDeleteDownloads : Bool = true
63- @State var shouldUninstallOrphans : Bool = true
64- @State var shouldPerformHealthCheck : Bool = false
70+ @State private var selectedMaintenanceStepsTracker : SelectedMaintenanceStepsTracker = . init( )
6571
6672 @State var numberOfOrphansRemoved : Int = 0
6773
@@ -107,60 +113,53 @@ struct MaintenanceView: View
107113 {
108114 SheetTemplate ( isShowingTitle: maintenanceSteps. shouldShowTitle)
109115 {
110- Group
111- {
112- switch maintenanceSteps
116+ maintenanceStepsViews
117+ . navigationTitle ( sheetTitle )
118+ . toolbar
113119 {
114- case . ready:
115- MaintenanceReadyView (
116- shouldUninstallOrphans: $shouldUninstallOrphans,
117- shouldPurgeCache: $shouldPurgeCache,
118- shouldDeleteDownloads: $shouldDeleteDownloads,
119- shouldPerformHealthCheck: $shouldPerformHealthCheck,
120- maintenanceSteps: $maintenanceSteps,
121- isShowingControlButtons: true ,
122- forcedOptions: forcedOptions!
123- )
124-
125- case . maintenanceRunning:
126- MaintenanceRunningView (
127- shouldUninstallOrphans: shouldUninstallOrphans,
128- shouldPurgeCache: shouldPurgeCache,
129- shouldDeleteDownloads: shouldDeleteDownloads,
130- shouldPerformHealthCheck: shouldPerformHealthCheck,
131- numberOfOrphansRemoved: $numberOfOrphansRemoved,
132- packagesHoldingBackCachePurge: $packagesHoldingBackCachePurge,
133- reclaimedSpaceAfterCachePurge: $reclaimedSpaceAfterCachePurge,
134- healthCheckStatus: $brewHealthCheckStatus,
135- maintenanceSteps: $maintenanceSteps
136- )
137-
138- case . finished( let results) :
139- MaintenanceFinishedView (
140- maintenanceResults: results
141- )
142- }
143- }
144- . navigationTitle ( sheetTitle)
145- . toolbar
146- {
147- if maintenanceSteps. isDismissable
148- {
149- ToolbarItem ( placement: . cancellationAction)
120+ if maintenanceSteps. isDismissable
150121 {
151- Button
122+ ToolbarItem ( placement : . cancellationAction )
152123 {
153- dismiss ( )
154- } label: {
155- Text ( dismissButtonTitle)
124+ Button
125+ {
126+ dismiss ( )
127+ } label: {
128+ Text ( dismissButtonTitle)
129+ }
130+ . keyboardShortcut ( . cancelAction)
156131 }
157- . keyboardShortcut ( . cancelAction)
158132 }
159133 }
160- }
161134 }
162135 }
163136 }
137+
138+ @ViewBuilder
139+ var maintenanceStepsViews : some View
140+ {
141+ switch maintenanceSteps
142+ {
143+ case . ready:
144+ MaintenanceReadyView (
145+ selectedMaintenanceStepsTracker: selectedMaintenanceStepsTracker,
146+ maintenanceSteps: $maintenanceSteps,
147+ isShowingControlButtons: true ,
148+ forcedOptions: forcedOptions!
149+ )
150+
151+ case . maintenanceRunning:
152+ MaintenanceRunningView (
153+ maintenanceSteps: $maintenanceSteps,
154+ selectedMaintenanceStepsTracker: selectedMaintenanceStepsTracker
155+ )
156+
157+ case . finished( let results) :
158+ MaintenanceFinishedView (
159+ maintenanceResults: results
160+ )
161+ }
162+ }
164163}
165164
166165extension MaintenanceView
0 commit comments