88// swiftlint:disable file_length
99
1010import ButtonKit
11+ import CorkModels
1112import CorkShared
13+ import CorkTerminalFunctions
1214import Defaults
15+ import FactoryKit
1316import SwiftUI
14- import CorkModels
15- import CorkTerminalFunctions
1617
1718struct ContentView : View , Sendable
1819{
@@ -30,7 +31,7 @@ struct ContentView: View, Sendable
3031
3132 @Environment ( \. openWindow) var openWindow : OpenWindowAction
3233
33- @Environment ( AppState . self ) var appState : AppState
34+ @InjectedObservable ( \ . appState ) var appState : AppState
3435
3536 @Environment ( BrewPackagesTracker . self) var brewPackagesTracker : BrewPackagesTracker
3637 @Environment ( TapTracker . self) var tapTracker : TapTracker
@@ -221,7 +222,7 @@ private extension View
221222 if FileManager . default. fileExists ( atPath: AppConstants . shared. documentsDirectoryPath. path)
222223 {
223224 AppConstants . shared. logger. info ( " Documents directory exists - will try to delete it... " )
224-
225+
225226 do
226227 {
227228 try FileManager . default. removeItem ( at: AppConstants . shared. documentsDirectoryPath)
@@ -271,16 +272,14 @@ private extension View
271272 {
272273 defer
273274 {
274- view. appState . isLoadingTaps = false
275+ view. tapTracker . isBeingLoaded = false
275276 }
276277
277- async let tapTracker : [ BrewTap ] = await view. tapTracker. loadUpTappedTaps ( )
278-
279- do
278+ do throws ( TapLoadingError)
280279 {
281- view. tapTracker. addedTaps = try await tapTracker
280+ view. tapTracker. addedTaps = try await view . tapTracker. loadUpTappedTaps ( )
282281 }
283- catch let tapLoadingError as TapLoadingError
282+ catch let tapLoadingError
284283 {
285284 AppConstants . shared. logger. error ( " Failed while loading taps: \( tapLoadingError. localizedDescription) " )
286285
@@ -292,14 +291,10 @@ private extension View
292291 view. appState. showAlert ( errorToShow: . tapLoadingFailedDueToTapParentLocation( localizedDescription: errorDetails) )
293292 case . couldNotReadTapFolderContents( let errorDetails) :
294293 view. appState. showAlert ( errorToShow: . tapLoadingFailedDueToTapItself( localizedDescription: errorDetails) )
294+ case . couldNotParseTapName( let errorDetails) :
295+ view. appState. showAlert ( errorToShow: . generic( customMessage: errorDetails) )
295296 }
296297 }
297- catch let unimplementedError
298- {
299- AppConstants . shared. logger. error ( " Failed while loading taps: Unimplemented error: \( unimplementedError. localizedDescription) " )
300-
301- view. appState. failedWhileLoadingTaps = true
302- }
303298 }
304299 }
305300
@@ -310,9 +305,9 @@ private extension View
310305 {
311306 AppConstants . shared. logger. info ( " Started Analytics startup action at \( Date ( ) ) " )
312307
313- async let analyticsQueryCommand : TerminalOutput = await shell ( AppConstants . shared. brewExecutablePath, [ " analytics " ] )
308+ async let analyticsQueryCommand : [ TerminalOutput ] = await shell ( AppConstants . shared. brewExecutablePath, [ " analytics " ] )
314309
315- if await analyticsQueryCommand. standardOutput . localizedCaseInsensitiveContains ( " Analytics are enabled " )
310+ if await analyticsQueryCommand. standardOutputs . joined ( ) . localizedCaseInsensitiveContains ( " Analytics are enabled " )
316311 {
317312 view. allowBrewAnalytics = true
318313 AppConstants . shared. logger. info ( " Analytics are ENABLED " )
@@ -430,7 +425,7 @@ private extension View
430425
431426 case . massAppAdoption( let appsToAdopt) :
432427 MassAppAdoptionView ( appsToAdopt: appsToAdopt)
433-
428+
434429 case . fullUpdate:
435430 UpdatePackagesView ( )
436431
@@ -473,7 +468,7 @@ private extension View
473468 {
474469 case . generic:
475470 EmptyView ( )
476-
471+
477472 case . couldNotGetContentsOfPackageFolder:
478473 EmptyView ( )
479474
@@ -655,7 +650,6 @@ private extension View
655650 try await view. brewPackagesTracker. uninstallSelectedPackage (
656651 package : packageToUninstall,
657652 cachedDownloadsTracker: view. cachedDownloadsTracker,
658- appState: view. appState,
659653 outdatedPackagesTracker: view. outdatedPackagesTracker,
660654 shouldRemoveAllAssociatedFiles: false
661655 )
@@ -671,7 +665,6 @@ private extension View
671665 try await view. brewPackagesTracker. uninstallSelectedPackage (
672666 package : packageToPurge,
673667 cachedDownloadsTracker: view. cachedDownloadsTracker,
674- appState: view. appState,
675668 outdatedPackagesTracker: view. outdatedPackagesTracker,
676669 shouldRemoveAllAssociatedFiles: true
677670 )
0 commit comments