@@ -39,7 +39,6 @@ struct ContentView: View, Sendable
3939 @EnvironmentObject var updateProgressTracker : UpdateProgressTracker
4040
4141 @EnvironmentObject var outdatedPackageTracker : OutdatedPackageTracker
42- @EnvironmentObject var uninstallationConfirmationTracker : UninstallationConfirmationTracker
4342
4443 @State private var multiSelection : Set < UUID > = . init( )
4544 @State private var columnVisibility : NavigationSplitViewVisibility = . doubleColumn
@@ -755,36 +754,42 @@ private extension View
755754 func confirmationDialogs( of view: ContentView ) -> some View
756755 {
757756 self
758- . confirmationDialog ( view. uninstallationConfirmationTracker. shouldPurge ? " action.purge.confirm.title. \( view. uninstallationConfirmationTracker. packageThatNeedsConfirmation. name) " : " action.uninstall.confirm.title. \( view. uninstallationConfirmationTracker. packageThatNeedsConfirmation. name) " , isPresented: view. $uninstallationConfirmationTracker. isShowingUninstallOrPurgeConfirmation)
759- {
760- AsyncButton ( role: . destructive)
761- {
762- view. uninstallationConfirmationTracker. isShowingUninstallOrPurgeConfirmation = false
763-
764- try await view. brewData. uninstallSelectedPackage (
765- package : view. uninstallationConfirmationTracker. packageThatNeedsConfirmation,
766- cachedPackagesTracker: view. cachedDownloadsTracker,
767- appState: view. appState,
768- outdatedPackageTracker: view. outdatedPackageTracker,
769- shouldRemoveAllAssociatedFiles: view. uninstallationConfirmationTracker. shouldPurge,
770- shouldApplyUninstallSpinnerToRelevantItemInSidebar: view. uninstallationConfirmationTracker. isCalledFromSidebar
771- )
772- } label: {
773- Text ( view. uninstallationConfirmationTracker. shouldPurge ? " action.purge- \( view. uninstallationConfirmationTracker. packageThatNeedsConfirmation. name) " : " action.uninstall- \( view. uninstallationConfirmationTracker. packageThatNeedsConfirmation. name) " )
774- }
775- . keyboardShortcut ( . defaultAction)
776- . asyncButtonStyle ( . plainStyle)
777-
778- Button ( role: . cancel)
757+ . confirmationDialog ( view. appState. confirmationDialogType? . title ?? " error.generic " , isPresented: view. $appState. isShowingConfirmationDialog, presenting: view. appState. confirmationDialogType, actions: { dialogType in
758+ switch dialogType
779759 {
780- view. uninstallationConfirmationTracker. dismissConfirmationDialog ( )
781- } label: {
782- Text ( " action.cancel " )
760+ case . uninstallPackage( let packageToUninstall) :
761+ AsyncButton
762+ {
763+ try await view. brewData. uninstallSelectedPackage (
764+ package : packageToUninstall,
765+ cachedPackagesTracker: view. cachedDownloadsTracker,
766+ appState: view. appState,
767+ outdatedPackageTracker: view. outdatedPackageTracker,
768+ shouldRemoveAllAssociatedFiles: false
769+ )
770+ } label: {
771+ Text ( " action.uninstall- \( packageToUninstall. name) " )
772+ }
773+ . keyboardShortcut ( . defaultAction)
774+ . asyncButtonStyle ( . plainStyle)
775+
776+ case . purgePackage( let packageToPurge) :
777+ AsyncButton
778+ {
779+ try await view. brewData. uninstallSelectedPackage (
780+ package : packageToPurge,
781+ cachedPackagesTracker: view. cachedDownloadsTracker,
782+ appState: view. appState,
783+ outdatedPackageTracker: view. outdatedPackageTracker,
784+ shouldRemoveAllAssociatedFiles: true
785+ )
786+ } label: {
787+ Text ( " action.purge- \( packageToPurge. name) " )
788+ }
783789 }
784- . keyboardShortcut ( . cancelAction)
785- } message: {
786- Text ( " action.warning.cannot-be-undone " )
787- }
790+ } , message: { dialogType in
791+ Text ( dialogType. message)
792+ } )
788793 }
789794}
790795
0 commit comments