Skip to content

Commit 608a7a0

Browse files
committed
~ Work on refactoring…
1 parent 316f8ab commit 608a7a0

File tree

11 files changed

+144
-106
lines changed

11 files changed

+144
-106
lines changed

Cork/CorkApp.swift

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ struct CorkApp: App
144144
{ _, newValue in
145145
handleDemoTiming(newValue: newValue)
146146
}
147-
.onChange(of: outdatedPackagesTracker.displayableOutdatedPackages.count)
147+
.onChange(of: outdatedPackagesTracker.displayableOutdatedPackagesTracker.allDisplayableOutdatedPackages.count)
148148
{ _, outdatedPackageCount in
149149
handleOutdatedPackageChangeAppBadge(outdatedPackageCount: outdatedPackageCount)
150150
}
@@ -320,7 +320,7 @@ struct CorkApp: App
320320

321321
// MARK: - Menu Bar Extra
322322

323-
MenuBarExtra("app-name", systemImage: outdatedPackagesTracker.displayableOutdatedPackages.isEmpty ? "mug" : "mug.fill", isInserted: $showInMenuBar)
323+
MenuBarExtra("app-name", systemImage: outdatedPackagesTracker.displayableOutdatedPackagesTracker.allDisplayableOutdatedPackages.isEmpty ? "mug" : "mug.fill", isInserted: $showInMenuBar)
324324
{
325325
MenuBarItem()
326326
.environment(appDelegate.appState)
@@ -608,9 +608,9 @@ struct CorkApp: App
608608
{
609609
if outdatedPackageNotificationType == .badge || outdatedPackageNotificationType == .both
610610
{
611-
if !outdatedPackagesTracker.displayableOutdatedPackages.isEmpty
611+
if !outdatedPackagesTracker.displayableOutdatedPackagesTracker.allDisplayableOutdatedPackages.isEmpty
612612
{
613-
NSApp.dockTile.badgeLabel = String(outdatedPackagesTracker.displayableOutdatedPackages.count)
613+
NSApp.dockTile.badgeLabel = String(outdatedPackagesTracker.displayableOutdatedPackagesTracker.allDisplayableOutdatedPackages.count)
614614
}
615615
}
616616
else if outdatedPackageNotificationType == .notification || outdatedPackageNotificationType == .none
@@ -703,7 +703,7 @@ struct CorkApp: App
703703
/// Set this to `true` so the normal notification doesn't get sent
704704
await setWhetherToSendStandardUpdatesAvailableNotification(to: false)
705705

706-
let differentPackages: Set<OutdatedPackage> = await newOutdatedPackages.subtracting(outdatedPackagesTracker.displayableOutdatedPackages)
706+
let differentPackages: Set<OutdatedPackage> = await newOutdatedPackages.subtracting(outdatedPackagesTracker.displayableOutdatedPackagesTracker.allDisplayableOutdatedPackages)
707707
AppConstants.shared.logger.debug("Changed packages: \(differentPackages, privacy: .auto)")
708708

709709
sendNotification(title: String(localized: "notification.new-outdated-packages-found.title"), subtitle: differentPackages.map(\.package.name).formatted(.list(type: .and)))

Cork/Logic/Updating and Upgrading/Refresh Packages.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ func refreshPackages(_ updateProgressTracker: UpdateProgressTracker, outdatedPac
3030

3131
updateProgressTracker.updateProgress = updateProgressTracker.updateProgress + 0.1
3232

33-
if outdatedPackagesTracker.displayableOutdatedPackages.isEmpty
33+
if outdatedPackagesTracker.displayableOutdatedPackagesTracker.allDisplayableOutdatedPackages.isEmpty
3434
{
3535
if outputLine.starts(with: "Already up-to-date")
3636
{

Cork/Views/Maintenance/Sub-Views/Maintenance Finished View.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ struct MaintenanceFinishedView: View
6060

6161
/// **Motivation**: Same as above, but even more performant
6262
/// Only formulae can hold back cache purging. Therefore, we just filter out the outdated formulae, and those must be holding back the purging
63-
return outdatedPackagesTracker.displayableOutdatedPackages.filter { $0.package.type == .formula }.map(\.package.name)
63+
return outdatedPackagesTracker.displayableOutdatedPackagesTracker.allDisplayableOutdatedPackages.filter { $0.package.type == .formula }.map(\.package.name)
6464
}
6565
else
6666
{

Cork/Views/Menu Bar/Sub-Views/Menu Bar - Package Updating.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,20 +22,20 @@ struct MenuBar_PackageUpdating: View
2222
}
2323
else
2424
{
25-
if !outdatedPackagesTracker.displayableOutdatedPackages.isEmpty
25+
if !outdatedPackagesTracker.displayableOutdatedPackagesTracker.allDisplayableOutdatedPackages.isEmpty
2626
{
2727
if let sanitizedSheetState = appState.sheetToShow
2828
{
2929
if sanitizedSheetState != .fullUpdate || sanitizedSheetState != .partialUpdate(packagesToUpdate: .init())
3030
{
3131
Menu
3232
{
33-
ForEach(outdatedPackagesTracker.displayableOutdatedPackages.sorted(by: { $0.package.installedOn! < $1.package.installedOn! }))
33+
ForEach(outdatedPackagesTracker.displayableOutdatedPackagesTracker.allDisplayableOutdatedPackages.sorted(by: { $0.package.installedOn! < $1.package.installedOn! }))
3434
{ outdatedPackage in
3535
SanitizedPackageName(package: outdatedPackage.package, shouldShowVersion: false)
3636
}
3737
} label: {
38-
Text("notification.outdated-packages-found.body-\(outdatedPackagesTracker.displayableOutdatedPackages.count)")
38+
Text("notification.outdated-packages-found.body-\(outdatedPackagesTracker.displayableOutdatedPackagesTracker.allDisplayableOutdatedPackages.count)")
3939
}
4040

4141
Button("navigation.upgrade-packages")

Cork/Views/Packages/Package List Item.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ struct PackageListItem: View
1616

1717
var isPackageOutdated: Bool
1818
{
19-
if outdatedPackagesTracker.displayableOutdatedPackages.contains(where: { $0.package.name == packageItem.name })
19+
if outdatedPackagesTracker.displayableOutdatedPackagesTracker.allDisplayableOutdatedPackages.contains(where: { $0.package.name == packageItem.name })
2020
{
2121
return true
2222
}

Cork/Views/Sidebar/Components/Sidebar Context Menu.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ struct SidebarContextMenu: View
2020

2121
var isPackageOutdated: Bool
2222
{
23-
if outdatedPackagesTracker.displayableOutdatedPackages.contains(where: { $0.package.name == package.name })
23+
if outdatedPackagesTracker.displayableOutdatedPackagesTracker.allDisplayableOutdatedPackages.contains(where: { $0.package.name == package.name })
2424
{
2525
return true
2626
}

Cork/Views/Start Page/Sub-Views/Outdated Packages/Outdated Package List Box.swift

Lines changed: 21 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,7 @@ import CorkShared
1111
import CorkModels
1212

1313
struct OutdatedPackageListBox: View
14-
{
15-
enum OutdatedPackageListBoxViewType
16-
{
17-
/// Only packages that are managed by Homerbew are outdated
18-
case managedOnly
19-
20-
/// Both packages that are managed by Homebrew, and those that are not (available only through the `--greedy` flag) are available
21-
case bothManagedAndUnmanaged
22-
23-
/// Only unmanaged packages (available only through the `--greedy` flag) are availabe
24-
case unmanagedOnly
25-
}
26-
14+
{
2715
@Default(.displayOnlyIntentionallyInstalledPackagesByDefault) var displayOnlyIntentionallyInstalledPackagesByDefault: Bool
2816

2917
@Default(.outdatedPackageInfoDisplayAmount) var outdatedPackageInfoDisplayAmount: OutdatedPackageInfoAmount
@@ -34,37 +22,6 @@ struct OutdatedPackageListBox: View
3422
@Binding var isDropdownExpanded: Bool
3523

3624
@State private var isSelfUpdatingSectionExpanded: Bool = false
37-
38-
private var packagesMarkedForUpdating: [OutdatedPackage]
39-
{
40-
return outdatedPackagesTracker.displayableOutdatedPackages.filter { $0.isMarkedForUpdating }
41-
}
42-
43-
private var packagesManagedByHomebrew: Set<OutdatedPackage>
44-
{
45-
return outdatedPackagesTracker.displayableOutdatedPackages.filter { $0.updatingManagedBy == .homebrew }
46-
}
47-
48-
private var packagesThatUpdateThemselves: Set<OutdatedPackage>
49-
{
50-
return outdatedPackagesTracker.displayableOutdatedPackages.filter { $0.updatingManagedBy == .selfUpdating }
51-
}
52-
53-
private var outdatedPackageListBoxType: OutdatedPackageListBoxViewType
54-
{
55-
if !packagesManagedByHomebrew.isEmpty && !packagesThatUpdateThemselves.isEmpty
56-
{ /// Managed packages are not empty, unmanaged packages are not empty
57-
return .bothManagedAndUnmanaged
58-
}
59-
else if packagesManagedByHomebrew.isEmpty && !packagesThatUpdateThemselves.isEmpty
60-
{ /// Managed packages are empty, unmanaged packages are not empty
61-
return .unmanagedOnly
62-
}
63-
else
64-
{
65-
return .managedOnly
66-
}
67-
}
6825

6926
var body: some View
7027
{
@@ -74,28 +31,26 @@ struct OutdatedPackageListBox: View
7431
{
7532
VStack(alignment: .leading)
7633
{
77-
GroupBoxHeadlineGroupWithArbitraryContent(image: outdatedPackagesTracker.displayableOutdatedPackages.count == 1 ? "square.and.arrow.down" : "square.and.arrow.down.on.square")
34+
GroupBoxHeadlineGroupWithArbitraryContent(image: outdatedPackagesTracker.displayableOutdatedPackagesTracker.allDisplayableOutdatedPackages.count == 1 ? "square.and.arrow.down" : "square.and.arrow.down.on.square")
7835
{
7936
VStack(alignment: .leading, spacing: 5)
8037
{
8138
HStack(alignment: .firstTextBaseline)
8239
{
8340
Group
8441
{
85-
if packagesManagedByHomebrew.isEmpty && !packagesThatUpdateThemselves.isEmpty
86-
{ /// If the only outdated packages are those that update themselves, show a special message
87-
Text("start-page.updates.only-unmanaged.count-\(outdatedPackagesTracker.displayableOutdatedPackages.count)")
88-
}
89-
else
90-
{ /// Otherwise, show the standard message
91-
Text("start-page.updates.count-\(outdatedPackagesTracker.displayableOutdatedPackages.count)")
42+
switch outdatedPackagesTracker.outdatedPackageListBoxViewType {
43+
case .managedOnly, .bothManagedAndUnmanaged:
44+
Text("start-page.updates.count-\(outdatedPackagesTracker.displayableOutdatedPackagesTracker.allDisplayableOutdatedPackages.count)")
45+
case .unmanagedOnly:
46+
Text("start-page.updates.only-unmanaged.count-\(outdatedPackagesTracker.displayableOutdatedPackagesTracker.allDisplayableOutdatedPackages.count)")
9247
}
9348
}
9449
.font(.headline)
9550

9651
Spacer()
9752

98-
if packagesMarkedForUpdating.count == outdatedPackagesTracker.displayableOutdatedPackages.count
53+
if outdatedPackagesTracker.displayableOutdatedPackagesTracker.areAllOutdatedPackagesMarkedForUpdating
9954
{
10055
Button
10156
{
@@ -112,16 +67,25 @@ struct OutdatedPackageListBox: View
11267
{
11368
Button
11469
{
115-
appState.showSheet(ofType: .partialUpdate(packagesToUpdate: packagesMarkedForUpdating))
70+
appState.showSheet(ofType: .partialUpdate(packagesToUpdate: outdatedPackagesTracker.displayableOutdatedPackagesTracker.packagesMarkedForUpdating))
11671
} label: {
117-
Text("start-page.update-incremental.package-count-\(packagesMarkedForUpdating.count)")
72+
Text("start-page.update-incremental.package-count-\(outdatedPackagesTracker.displayableOutdatedPackagesTracker.packagesMarkedForUpdating.count)")
11873
}
119-
.disabled(packagesMarkedForUpdating.isEmpty)
74+
.disabled(outdatedPackagesTracker.displayableOutdatedPackagesTracker.packagesMarkedForUpdating.isEmpty)
12075
}
12176
}
12277

12378
DisclosureGroup(isExpanded: $isDropdownExpanded)
12479
{
80+
switch outdatedPackagesTracker.outdatedPackageListBoxViewType
81+
{
82+
case .managedOnly:
83+
<#code#>
84+
case .bothManagedAndUnmanaged:
85+
<#code#>
86+
case .unmanagedOnly:
87+
<#code#>
88+
}
12589
switch outdatedPackageListBoxType
12690
{
12791
case .managedOnly:
@@ -241,7 +205,7 @@ struct OutdatedPackageListBox: View
241205
} label: {
242206
Text("start-page.updated.action.select-all")
243207
}
244-
.disabled(packagesMarkedForUpdating.count == outdatedPackagesTracker.displayableOutdatedPackages.count)
208+
.disabled(packagesMarkedForUpdating.count == outdatedPackagesTracker.displayableOutdatedPackagesTracker.allDisplayableOutdatedPackages.count)
245209
.modify
246210
{ viewProxy in
247211
if outdatedPackageInfoDisplayAmount != .all
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
//
2+
// Outdated Packages List.swift
3+
// Cork
4+
//
5+
// Created by David Bureš - P on 06.01.2026.
6+
//
7+
8+
import SwiftUI
9+
10+
struct OutdatedPackagesList: View {
11+
var body: some View {
12+
Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/)
13+
}
14+
}

Modules/Packages/PackagesModels/Logic/Installation & Removal/Removal/Uninstall Packages.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ public extension BrewPackagesTracker
106106
AppConstants.shared.logger.info("Package uninstallation process output:\nStandard output: \(uninstallCommandOutput.standardOutput, privacy: .public)\nStandard error: \(uninstallCommandOutput.standardError, privacy: .public)")
107107

108108
/// If the user removed a package that was outdated, remove it from the outdated package tracker
109-
if let index = outdatedPackagesTracker.displayableOutdatedPackages.firstIndex(where: { $0.package.name == package.name })
109+
if let index = outdatedPackagesTracker.outdatedPackages.firstIndex(where: { $0.package.name == package.name })
110110
{
111111
outdatedPackagesTracker.outdatedPackages.remove(at: index)
112112
}

Modules/Packages/PackagesModels/Logic/Package Loading/Get Outdated Packages.swift

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,8 @@ public extension OutdatedPackagesTracker
7878
}
7979

8080
/// Load outdated packages into the outdated package tracker
81-
private nonisolated func getOutdatedPackagesInternal(
81+
private nonisolated
82+
func getOutdatedPackagesInternal(
8283
brewPackagesTracker: BrewPackagesTracker,
8384
forUpdatingType updatingType: OutdatedPackage.PackageUpdatingType
8485
) async throws -> Set<OutdatedPackage>
@@ -140,7 +141,8 @@ public extension OutdatedPackagesTracker
140141

141142
// MARK: - Helper functions
142143

143-
private nonisolated func getOutdatedFormulae(
144+
private nonisolated
145+
func getOutdatedFormulae(
144146
from intermediaryArray: [OutdatedPackageCommandOutput.Formulae],
145147
brewPackagesTracker: BrewPackagesTracker,
146148
forUpdatingType updatingType: OutdatedPackage.PackageUpdatingType
@@ -165,13 +167,14 @@ public extension OutdatedPackagesTracker
165167
return finalOutdatedFormulaTracker
166168
}
167169

168-
private func getOutdatedCasks(from intermediaryArray: [OutdatedPackageCommandOutput.Casks], brewPackagesTracker: BrewPackagesTracker, forUpdatingType updatingType: OutdatedPackage.PackageUpdatingType) async -> Set<OutdatedPackage>
170+
private
171+
func getOutdatedCasks(from intermediaryArray: [OutdatedPackageCommandOutput.Casks], brewPackagesTracker: BrewPackagesTracker, forUpdatingType updatingType: OutdatedPackage.PackageUpdatingType) async -> Set<OutdatedPackage>
169172
{
170173
var finalOutdatedCaskTracker: Set<OutdatedPackage> = .init()
171174

172175
for outdatedCask in intermediaryArray
173176
{
174-
if let foundOutdatedCask = brewPackagesTracker.successfullyLoadedCasks.first(where: { $0.name == outdatedCask.name })
177+
if let foundOutdatedCask = await brewPackagesTracker.successfullyLoadedCasks.first(where: { $0.name == outdatedCask.name })
175178
{
176179
finalOutdatedCaskTracker.insert(.init(
177180
package: foundOutdatedCask,

0 commit comments

Comments
 (0)