~ More work

This commit is contained in:
David Bureš 2025-11-10 21:42:19 +01:00
parent 094caff1cb
commit 1ded3d13c1
No known key found for this signature in database
89 changed files with 167 additions and 28 deletions

View File

@ -12,6 +12,7 @@ import SwiftUI
import CorkShared import CorkShared
import Defaults import Defaults
import DefaultsMacros import DefaultsMacros
import CorkModels
@Observable @Observable
class AppDelegate: NSObject, NSApplicationDelegate class AppDelegate: NSObject, NSApplicationDelegate

View File

@ -11,6 +11,8 @@ import ButtonKit
import CorkShared import CorkShared
import Defaults import Defaults
import SwiftUI import SwiftUI
import CorkModels
import CorkTerminalFunctions
struct ContentView: View, Sendable struct ContentView: View, Sendable
{ {

View File

@ -15,6 +15,8 @@ import Defaults
import SwiftData import SwiftData
import SwiftUI import SwiftUI
import UserNotifications import UserNotifications
import CorkModels
import CorkTerminalFunctions
@main @main
struct CorkApp: App struct CorkApp: App
@ -716,7 +718,7 @@ struct CorkApp: App
{ {
Button Button
{ {
openWindow(id: .errorInspectorWindowID, value: PackageLoadingError.packageIsNotAFolder("Hello I am an error", packageURL: .applicationDirectory).localizedDescription) openWindow(id: .errorInspectorWindowID, value: BrewPackage.PackageLoadingError.packageIsNotAFolder("Hello I am an error", packageURL: .applicationDirectory).localizedDescription)
} label: { } label: {
Text("debug.action.show-error-inspector") Text("debug.action.show-error-inspector")
} }

View File

@ -6,6 +6,7 @@
// //
import Foundation import Foundation
import CorkModels
enum NavigationTargetMainWindow: Hashable enum NavigationTargetMainWindow: Hashable
{ {

View File

@ -9,6 +9,7 @@ import AppIntents
import Foundation import Foundation
import CorkShared import CorkShared
import CorkModels import CorkModels
import CorkIntents
public struct GetInstalledCasksIntent: AppIntent public struct GetInstalledCasksIntent: AppIntent
{ {

View File

@ -6,6 +6,7 @@
// //
import SwiftUI import SwiftUI
import CorkModels
struct BrewfileImportProgressView: View struct BrewfileImportProgressView: View
{ {

View File

@ -10,6 +10,7 @@ import CorkShared
import SwiftUI import SwiftUI
import ButtonKit import ButtonKit
import Defaults import Defaults
import CorkModels
struct AddFormulaView: View struct AddFormulaView: View
{ {

View File

@ -8,6 +8,7 @@
import SwiftUI import SwiftUI
import CorkShared import CorkShared
import Defaults import Defaults
import CorkModels
struct SearchResultRow: View, Sendable struct SearchResultRow: View, Sendable
{ {
@ -130,7 +131,7 @@ struct SearchResultRow: View, Sendable
do do
{ {
let parsedPackageInfo: BrewPackageDetails = try await searchedForPackage.loadDetails() let parsedPackageInfo: BrewPackage.BrewPackageDetails = try await searchedForPackage.loadDetails()
description = parsedPackageInfo.description description = parsedPackageInfo.description

View File

@ -8,6 +8,7 @@
import SwiftUI import SwiftUI
import CorkShared import CorkShared
import Defaults import Defaults
import CorkModels
struct InstallationInitialView: View struct InstallationInitialView: View
{ {

View File

@ -8,6 +8,7 @@
import SwiftUI import SwiftUI
import CorkShared import CorkShared
import Defaults import Defaults
import CorkModels
struct TopPackagesSection: View struct TopPackagesSection: View
{ {

View File

@ -7,6 +7,8 @@
import SwiftUI import SwiftUI
import CorkShared import CorkShared
import CorkModels
import CorkTerminalFunctions
struct InstallingPackageView: View struct InstallingPackageView: View
{ {

View File

@ -7,6 +7,7 @@
import CorkShared import CorkShared
import SwiftUI import SwiftUI
import CorkModels
struct PresentingSearchResultsView: View struct PresentingSearchResultsView: View
{ {

View File

@ -6,6 +6,7 @@
// //
import SwiftUI import SwiftUI
import CorkModels
struct InstallationSearchingView: View, Sendable struct InstallationSearchingView: View, Sendable
{ {

View File

@ -7,6 +7,8 @@
import CorkShared import CorkShared
import SwiftUI import SwiftUI
import CorkModels
import CorkTerminalFunctions
struct AdoptingAlreadyInstalledCaskView: View struct AdoptingAlreadyInstalledCaskView: View
{ {

View File

@ -6,6 +6,7 @@
// //
import SwiftUI import SwiftUI
import CorkModels
struct AnotherProcessAlreadyRunningView: View struct AnotherProcessAlreadyRunningView: View
{ {

View File

@ -7,6 +7,7 @@
import Foundation import Foundation
import SwiftUI import SwiftUI
import CorkModels
struct BinaryAlreadyExistsView: View, Sendable struct BinaryAlreadyExistsView: View, Sendable
{ {

View File

@ -6,6 +6,7 @@
// //
import SwiftUI import SwiftUI
import CorkModels
struct InstallationFatalErrorView: View struct InstallationFatalErrorView: View
{ {

View File

@ -9,6 +9,7 @@ import CorkNotifications
import CorkShared import CorkShared
import SwiftUI import SwiftUI
import Defaults import Defaults
import CorkModels
struct InstallationFinishedSuccessfullyView: View struct InstallationFinishedSuccessfullyView: View
{ {

View File

@ -6,6 +6,7 @@
// //
import SwiftUI import SwiftUI
import CorkModels
struct SudoRequiredView: View, Sendable struct SudoRequiredView: View, Sendable
{ {

View File

@ -6,6 +6,7 @@
// //
import SwiftUI import SwiftUI
import CorkModels
struct WrongArchitectureView: View, Sendable struct WrongArchitectureView: View, Sendable
{ {

View File

@ -8,6 +8,7 @@
import CorkShared import CorkShared
import SwiftUI import SwiftUI
import Defaults import Defaults
import CorkModels
struct LicensingView: View struct LicensingView: View
{ {

View File

@ -7,6 +7,7 @@
import SwiftUI import SwiftUI
import Defaults import Defaults
import CorkModels
struct Licensing_BoughtView: View struct Licensing_BoughtView: View
{ {

View File

@ -8,6 +8,7 @@
import SwiftUI import SwiftUI
import CorkShared import CorkShared
import Defaults import Defaults
import CorkModels
struct Licensing_DemoView: View struct Licensing_DemoView: View
{ {

View File

@ -9,6 +9,7 @@ import SwiftUI
import CorkShared import CorkShared
import ButtonKit import ButtonKit
import Defaults import Defaults
import CorkModels
struct Licensing_NotBoughtOrActivatedView: View struct Licensing_NotBoughtOrActivatedView: View
{ {

View File

@ -7,6 +7,7 @@
import SwiftUI import SwiftUI
import Defaults import Defaults
import CorkModels
struct Licensing_SelfCompiledView: View struct Licensing_SelfCompiledView: View
{ {

View File

@ -6,6 +6,7 @@
// //
import SwiftUI import SwiftUI
import CorkModels
enum MaintenanceSteps enum MaintenanceSteps
{ {

View File

@ -8,6 +8,7 @@
import CorkShared import CorkShared
import SwiftUI import SwiftUI
import Defaults import Defaults
import CorkModels
struct MaintenanceFinishedView: View struct MaintenanceFinishedView: View
{ {

View File

@ -7,6 +7,8 @@
import SwiftUI import SwiftUI
import CorkShared import CorkShared
import CorkModels
import CorkTerminalFunctions
struct MaintenanceRunningView: View struct MaintenanceRunningView: View
{ {

View File

@ -7,6 +7,7 @@
import CorkShared import CorkShared
import SwiftUI import SwiftUI
import CorkModels
struct MassAdoptionStage_Adopting: View struct MassAdoptionStage_Adopting: View
{ {

View File

@ -6,6 +6,7 @@
// //
import SwiftUI import SwiftUI
import CorkModels
typealias AdoptionProcessResult = Result<BrewPackagesTracker.AdoptableApp, MassAppAdoptionView.AdoptionAttemptFailure> typealias AdoptionProcessResult = Result<BrewPackagesTracker.AdoptableApp, MassAppAdoptionView.AdoptionAttemptFailure>

View File

@ -6,6 +6,7 @@
// //
import SwiftUI import SwiftUI
import CorkModels
struct MenuBarItem: View struct MenuBarItem: View
{ {

View File

@ -8,6 +8,7 @@
import SwiftUI import SwiftUI
import CorkShared import CorkShared
import CorkNotifications import CorkNotifications
import CorkModels
struct MenuBar_CachedDownloadsCleanup: View struct MenuBar_CachedDownloadsCleanup: View
{ {

View File

@ -6,6 +6,7 @@
// //
import SwiftUI import SwiftUI
import CorkModels
struct MenuBar_PackageOverview: View struct MenuBar_PackageOverview: View
{ {

View File

@ -6,6 +6,7 @@
// //
import SwiftUI import SwiftUI
import CorkModels
struct MenuBar_PackageUpdating: View struct MenuBar_PackageUpdating: View
{ {

View File

@ -7,6 +7,8 @@
import CorkShared import CorkShared
import SwiftUI import SwiftUI
import CorkModels
import ApplicationInspector
struct PackageDetailView: View, Sendable, DismissablePane struct PackageDetailView: View, Sendable, DismissablePane
{ {
@ -39,7 +41,7 @@ struct PackageDetailView: View, Sendable, DismissablePane
var isInPreviewWindow: Bool = false var isInPreviewWindow: Bool = false
@State private var packageDetails: BrewPackageDetails? = nil @State private var packageDetails: BrewPackage.BrewPackageDetails? = nil
@State private var caskExecutable: Application? = nil @State private var caskExecutable: Application? = nil

View File

@ -6,6 +6,7 @@
// //
import SwiftUI import SwiftUI
import CorkModels
struct PackageDependencies: View struct PackageDependencies: View
{ {

View File

@ -7,6 +7,7 @@
import SwiftUI import SwiftUI
import CorkShared import CorkShared
import CorkModels
struct PackageDetailHeaderComplex: View struct PackageDetailHeaderComplex: View
{ {
@ -22,7 +23,7 @@ struct PackageDetailHeaderComplex: View
var isInPreviewWindow: Bool var isInPreviewWindow: Bool
@Bindable var packageDetails: BrewPackageDetails @Bindable var packageDetails: BrewPackage.BrewPackageDetails
let isLoadingDetails: Bool let isLoadingDetails: Bool

View File

@ -9,6 +9,7 @@ import SwiftUI
import CorkShared import CorkShared
import ButtonKit import ButtonKit
import Defaults import Defaults
import CorkModels
struct PackageModificationButtons: View struct PackageModificationButtons: View
{ {
@ -21,7 +22,7 @@ struct PackageModificationButtons: View
@Environment(OutdatedPackagesTracker.self) var outdatedPackagesTracker: OutdatedPackagesTracker @Environment(OutdatedPackagesTracker.self) var outdatedPackagesTracker: OutdatedPackagesTracker
let package: BrewPackage let package: BrewPackage
@Bindable var packageDetails: BrewPackageDetails @Bindable var packageDetails: BrewPackage.BrewPackageDetails
let isLoadingDetails: Bool let isLoadingDetails: Bool

View File

@ -6,6 +6,8 @@
// //
import SwiftUI import SwiftUI
import ApplicationInspector
import CorkModels
struct PackageSystemInfo: View struct PackageSystemInfo: View
{ {

View File

@ -6,6 +6,7 @@
// //
import SwiftUI import SwiftUI
import CorkModels
struct PackageListItem: View struct PackageListItem: View
{ {

View File

@ -7,6 +7,7 @@
import SwiftUI import SwiftUI
import ButtonKit import ButtonKit
import CorkModels
struct SudoRequiredForRemovalSheet: View, Sendable struct SudoRequiredForRemovalSheet: View, Sendable
{ {

View File

@ -7,6 +7,7 @@
import SwiftUI import SwiftUI
import CorkShared import CorkShared
import CorkModels
struct CheckForOutdatedPackagesButton: View struct CheckForOutdatedPackagesButton: View
{ {

View File

@ -6,6 +6,7 @@
// //
import SwiftUI import SwiftUI
import CorkModels
struct DeleteCachedDownloadsButton: View struct DeleteCachedDownloadsButton: View
{ {

View File

@ -6,6 +6,7 @@
// //
import SwiftUI import SwiftUI
import CorkModels
struct OpenMaintenanceSheetButton: View struct OpenMaintenanceSheetButton: View
{ {

View File

@ -7,6 +7,7 @@
import SwiftUI import SwiftUI
import CorkShared import CorkShared
import CorkModels
struct UpdatePackageButton: View struct UpdatePackageButton: View
{ {

View File

@ -6,6 +6,7 @@
// //
import SwiftUI import SwiftUI
import CorkModels
struct HomebrewServicesView: View struct HomebrewServicesView: View
{ {

View File

@ -9,6 +9,7 @@ import Foundation
import SwiftUI import SwiftUI
import CorkShared import CorkShared
import Defaults import Defaults
import CorkTerminalFunctions
struct BrewPane: View struct BrewPane: View
{ {

View File

@ -9,6 +9,7 @@ import Foundation
import SwiftUI import SwiftUI
import CorkShared import CorkShared
import Defaults import Defaults
import CorkModels
struct DiscoverabilityPane: View struct DiscoverabilityPane: View
{ {

View File

@ -9,6 +9,7 @@ import CorkShared
import Defaults import Defaults
import SwiftUI import SwiftUI
import UserNotifications import UserNotifications
import CorkModels
struct NotificationsPane: View struct NotificationsPane: View
{ {

View File

@ -8,6 +8,7 @@
import SwiftUI import SwiftUI
import CorkShared import CorkShared
import Defaults import Defaults
import CorkModels
struct CasksSection: View struct CasksSection: View
{ {

View File

@ -8,6 +8,7 @@
import SwiftUI import SwiftUI
import CorkShared import CorkShared
import Defaults import Defaults
import CorkModels
struct FormulaeSection: View struct FormulaeSection: View
{ {

View File

@ -8,6 +8,7 @@
import SwiftUI import SwiftUI
import CorkShared import CorkShared
import Defaults import Defaults
import CorkModels
struct SidebarContextMenu: View struct SidebarContextMenu: View
{ {

View File

@ -8,6 +8,7 @@
import CorkShared import CorkShared
import SwiftUI import SwiftUI
import Defaults import Defaults
import CorkModels
struct SidebarPackageRow: View struct SidebarPackageRow: View
{ {

View File

@ -8,6 +8,7 @@
import CorkShared import CorkShared
import SwiftUI import SwiftUI
import ButtonKit import ButtonKit
import CorkModels
struct TapsSection: View struct TapsSection: View
{ {

View File

@ -8,6 +8,7 @@
import CorkShared import CorkShared
import Defaults import Defaults
import SwiftUI import SwiftUI
import CorkModels
struct SidebarView: View struct SidebarView: View
{ {

View File

@ -8,6 +8,7 @@
import CorkShared import CorkShared
import SwiftUI import SwiftUI
import Defaults import Defaults
import CorkModels
struct StartPage: View struct StartPage: View
{ {

View File

@ -10,6 +10,7 @@ import Defaults
import SwiftUI import SwiftUI
import ButtonKit import ButtonKit
import SwiftData import SwiftData
import CorkModels
struct AdoptablePackagesSection: View struct AdoptablePackagesSection: View
{ {
@ -20,7 +21,7 @@ struct AdoptablePackagesSection: View
@State private var isShowingAdoptionWarning: Bool = false @State private var isShowingAdoptionWarning: Bool = false
@Query private var excludedApps: [BrewPackagesTracker.ExcludedAdoptableApp] @Query private var excludedApps: [ExcludedAdoptableApp]
var body: some View var body: some View
{ {

View File

@ -7,6 +7,7 @@
import SwiftUI import SwiftUI
import CorkShared import CorkShared
import CorkModels
struct BrokenPackageListRow: View struct BrokenPackageListRow: View
{ {
@ -14,7 +15,7 @@ struct BrokenPackageListRow: View
@Environment(AppState.self) var appState: AppState @Environment(AppState.self) var appState: AppState
let error: PackageLoadingError let error: BrewPackage.PackageLoadingError
var body: some View var body: some View
{ {

View File

@ -7,6 +7,7 @@
import Charts import Charts
import SwiftUI import SwiftUI
import CorkModels
struct CachedDownloadsFolderInfoBox: View struct CachedDownloadsFolderInfoBox: View
{ {

View File

@ -6,6 +6,7 @@
// //
import SwiftUI import SwiftUI
import CorkModels
struct LoadingErrorsBox: View struct LoadingErrorsBox: View
{ {

View File

@ -6,6 +6,7 @@
// //
import SwiftUI import SwiftUI
import CorkModels
struct OutdatedPackagesBox: View struct OutdatedPackagesBox: View
{ {

View File

@ -6,6 +6,7 @@
// //
import SwiftUI import SwiftUI
import CorkModels
struct LoadingOfOutdatedPackagesFailedListBox: View struct LoadingOfOutdatedPackagesFailedListBox: View
{ {

View File

@ -8,6 +8,7 @@
import SwiftUI import SwiftUI
import Defaults import Defaults
import CorkShared import CorkShared
import CorkModels
struct OutdatedPackageListBox: View struct OutdatedPackageListBox: View
{ {

View File

@ -7,6 +7,7 @@
import CorkShared import CorkShared
import SwiftUI import SwiftUI
import CorkModels
struct OutdatedPackageLoaderBox: View struct OutdatedPackageLoaderBox: View
{ {

View File

@ -6,6 +6,7 @@
// //
import SwiftUI import SwiftUI
import CorkModels
enum TapAddingStates enum TapAddingStates
{ {

View File

@ -7,6 +7,7 @@
import SwiftUI import SwiftUI
import CorkShared import CorkShared
import CorkModels
struct AddTapAddingView: View struct AddTapAddingView: View
{ {

View File

@ -7,6 +7,8 @@
import SwiftUI import SwiftUI
import CorkShared import CorkShared
import CorkModels
import CorkTerminalFunctions
struct AddTapFinishedView: View struct AddTapFinishedView: View
{ {

View File

@ -6,6 +6,7 @@
// //
import SwiftUI import SwiftUI
import CorkModels
struct TapDetailsIncludedPackages: View struct TapDetailsIncludedPackages: View
{ {

View File

@ -6,12 +6,13 @@
// //
import SwiftUI import SwiftUI
import CorkModels
struct PackagesIncludedInTapList: View struct PackagesIncludedInTapList: View
{ {
@Environment(\.selectedTap) var selectedTap: BrewTap? @Environment(\.selectedTap) var selectedTap: BrewTap?
@Environment(BrewPackagesTracker.self) var brewPackagesTracker @Environment(BrewPackagesTracker.self) var brewPackagesTracker: BrewPackagesTracker
let packages: [MinimalHomebrewPackage] let packages: [MinimalHomebrewPackage]

View File

@ -6,6 +6,7 @@
// //
import SwiftUI import SwiftUI
import CorkModels
struct TapDetailsInfo: View struct TapDetailsInfo: View
{ {

View File

@ -6,6 +6,7 @@
// //
import SwiftUI import SwiftUI
import CorkModels
struct TapDetailsTitle: View struct TapDetailsTitle: View
{ {

View File

@ -8,6 +8,8 @@
import SwiftUI import SwiftUI
import CorkShared import CorkShared
import ButtonKit import ButtonKit
import CorkModels
import CorkTerminalFunctions
extension EnvironmentValues extension EnvironmentValues
{ {
@ -109,7 +111,15 @@ struct TapDetailView: View, Sendable
do do
{ {
tapInfo = try await parseTapInfo(from: tapInfoRaw) guard let tapInfoAsData = await tapInfoRaw.data(using: .utf8) else
{
errorOutReason = "Failed to convert String to Data"
erroredOut = true
return
}
tapInfo = try await .init(from: tapInfoAsData)
} }
catch let parsingError catch let parsingError
{ {

View File

@ -9,6 +9,7 @@ import CorkNotifications
import CorkShared import CorkShared
import Defaults import Defaults
import SwiftUI import SwiftUI
import CorkModels
struct ErroredOutStageView: View struct ErroredOutStageView: View
{ {

View File

@ -7,6 +7,7 @@
import SwiftUI import SwiftUI
import CorkShared import CorkShared
import CorkModels
struct CheckingForUpdatesStateView: View struct CheckingForUpdatesStateView: View
{ {

View File

@ -8,6 +8,7 @@
import SwiftUI import SwiftUI
import CorkShared import CorkShared
import Defaults import Defaults
import CorkModels
struct UpdatingPackageTrackerStateView: View struct UpdatingPackageTrackerStateView: View
{ {

View File

@ -6,6 +6,7 @@
// //
import SwiftUI import SwiftUI
import CorkModels
struct UpdatingPackagesStateView: View struct UpdatingPackagesStateView: View
{ {

View File

@ -7,6 +7,8 @@
import SwiftUI import SwiftUI
import CorkShared import CorkShared
import CorkModels
import CorkTerminalFunctions
struct UpdateSomePackagesView: View struct UpdateSomePackagesView: View
{ {

View File

@ -30,7 +30,7 @@ public enum ConfirmationDialog: Identifiable, Equatable
} }
} }
var message: LocalizedStringKey public var message: LocalizedStringKey
{ {
switch self switch self
{ {

View File

@ -7,11 +7,11 @@
import Foundation import Foundation
enum IntentError: LocalizedError public enum IntentError: LocalizedError
{ {
case failedWhilePerformingIntent case failedWhilePerformingIntent
var errorDescription: String? public var errorDescription: String?
{ {
switch self switch self
{ {

View File

@ -257,7 +257,7 @@ extension BrewPackage
/// Load package details /// Load package details
@MainActor @MainActor
func loadDetails() async throws -> BrewPackage.BrewPackageDetails public func loadDetails() async throws -> BrewPackage.BrewPackageDetails
{ {
let decoder: JSONDecoder = { let decoder: JSONDecoder = {
let decoder: JSONDecoder = .init() let decoder: JSONDecoder = .init()

View File

@ -20,7 +20,7 @@ import CorkTerminalFunctions
public typealias BrewPackages = Set<Result<BrewPackage, BrewPackage.PackageLoadingError>> public typealias BrewPackages = Set<Result<BrewPackage, BrewPackage.PackageLoadingError>>
/// A representation of a Homebrew package /// A representation of a Homebrew package
public struct BrewPackage: Identifiable, Equatable, Hashable, Codable, Sendable public struct BrewPackage: Identifiable, Equatable, Hashable, Codable, Sendable, Modifiable
{ {
public init( public init(
name: String, name: String,
@ -68,9 +68,9 @@ public struct BrewPackage: Identifiable, Equatable, Hashable, Codable, Sendable
/// Download count for top packages /// Download count for top packages
public let downloadCount: Int? public let downloadCount: Int?
var isBeingModified: Bool = false public var isBeingModified: Bool = false
func getFormattedVersions() -> String public func getFormattedVersions() -> String
{ {
return versions.formatted(.list(type: .and)) return versions.formatted(.list(type: .and))
} }
@ -393,7 +393,7 @@ extension BrewPackage
} }
} }
extension FormatStyle where Self == Date.FormatStyle public extension FormatStyle where Self == Date.FormatStyle
{ {
static var packageInstallationStyle: Self static var packageInstallationStyle: Self
{ {

View File

@ -9,12 +9,21 @@ import Foundation
public struct BrewTap: Identifiable, Hashable, Sendable public struct BrewTap: Identifiable, Hashable, Sendable
{ {
public let id: UUID = .init() public init(
let name: String name: String,
isBeingModified: Bool? = nil
) {
self.id = .init()
self.name = name
self.isBeingModified = isBeingModified ?? false
}
public let id: UUID
public let name: String
var isBeingModified: Bool = false public var isBeingModified: Bool
mutating func changeBeingModifiedStatus() public mutating func changeBeingModifiedStatus()
{ {
isBeingModified.toggle() isBeingModified.toggle()
} }

View File

@ -8,7 +8,7 @@
import Foundation import Foundation
import CorkShared import CorkShared
extension CachedDownloadsTracker public extension CachedDownloadsTracker
{ {
func assignPackageTypeToCachedDownloads(brewPackagesTracker: BrewPackagesTracker) func assignPackageTypeToCachedDownloads(brewPackagesTracker: BrewPackagesTracker)
{ {

View File

@ -9,6 +9,12 @@ import Foundation
public struct CorruptedPackage: Identifiable, Equatable public struct CorruptedPackage: Identifiable, Equatable
{ {
public let id: UUID = .init() public let id: UUID
let name: String public let name: String
public init(name: String)
{
self.id = .init()
self.name = name
}
} }

View File

@ -22,9 +22,14 @@ public class OutdatedPackagesTracker
case checkingForUpdates, showingOutdatedPackages, noUpdatesAvailable, erroredOut(reason: String) case checkingForUpdates, showingOutdatedPackages, noUpdatesAvailable, erroredOut(reason: String)
} }
public var isCheckingForPackageUpdates: Bool = true public init() {
self.isCheckingForPackageUpdates = true
self.outdatedPackages = .init()
}
public var isCheckingForPackageUpdates: Bool
public var outdatedPackages: Set<OutdatedPackage> = .init() public var outdatedPackages: Set<OutdatedPackage>
public var errorOutReason: String? public var errorOutReason: String?

View File

@ -6,7 +6,6 @@
// //
import Foundation import Foundation
import CorkModels
/// Decodable tap info /// Decodable tap info
public struct TapInfo: Codable public struct TapInfo: Codable

View File

@ -0,0 +1,14 @@
//
// Modifiable.swift
// CorkModels
//
// Created by David Bureš - P on 10.11.2025.
//
import Foundation
/// Defines a model that can be modified, and reflect the status of the modification in the UI
public protocol Modifiable: Sendable
{
var isBeingModified: Bool { get set }
}

View File

@ -12,6 +12,12 @@ import CorkShared
@Observable @MainActor @Observable @MainActor
public class CachedDownloadsTracker public class CachedDownloadsTracker
{ {
public init()
{
self.cachedDownloads = .init()
self.cachedDownloadsTemp = .init()
}
public var cachedDownloads: [CachedDownload] = .init() public var cachedDownloads: [CachedDownload] = .init()
private var cachedDownloadsTemp: [CachedDownload] = .init() private var cachedDownloadsTemp: [CachedDownload] = .init()

View File

@ -11,7 +11,12 @@ import Observation
@Observable @MainActor @Observable @MainActor
public class TapTracker public class TapTracker
{ {
var addedTaps: [BrewTap] = .init() public init()
{
self.addedTaps = .init()
}
public var addedTaps: [BrewTap]
} }
public extension TapTracker public extension TapTracker