[AltStoreCore] Adds AppProtocol.storeApp

Simplifies retrieving the associated StoreApp for an app.
This commit is contained in:
Riley Testut
2023-11-29 15:15:36 -06:00
committed by Magesh K
parent 91ea34110b
commit 7e232cafbe
5 changed files with 21 additions and 5 deletions

View File

@@ -104,7 +104,7 @@ public extension LoggedError
{
var app: AppProtocol {
// `as AppProtocol` needed to fix "cannot convert AnyApp to StoreApp" compiler error with Xcode 14.
let app = self.installedApp ?? self.storeApp ?? AnyApp(name: self.appName, bundleIdentifier: self.appBundleID, url: nil) as AppProtocol
let app = self.installedApp ?? self.storeApp ?? AnyApp(name: self.appName, bundleIdentifier: self.appBundleID, url: nil, storeApp: nil) as AppProtocol
return app
}

View File

@@ -14,6 +14,8 @@ public protocol AppProtocol
var name: String { get }
var bundleIdentifier: String { get }
var url: URL? { get }
var storeApp: StoreApp? { get }
}
public struct AnyApp: AppProtocol
@@ -21,12 +23,14 @@ public struct AnyApp: AppProtocol
public var name: String
public var bundleIdentifier: String
public var url: URL?
public var storeApp: StoreApp?
public init(name: String, bundleIdentifier: String, url: URL?)
public init(name: String, bundleIdentifier: String, url: URL?, storeApp: StoreApp?)
{
self.name = name
self.bundleIdentifier = bundleIdentifier
self.url = url
self.storeApp = storeApp
}
}
@@ -35,6 +39,10 @@ extension ALTApplication: AppProtocol
public var url: URL? {
return self.fileURL
}
public var storeApp: StoreApp? {
return nil
}
}
extension StoreApp: AppProtocol
@@ -42,6 +50,10 @@ extension StoreApp: AppProtocol
public var url: URL? {
return self.latestAvailableVersion?.downloadURL
}
public var storeApp: StoreApp? {
return self
}
}
extension InstalledApp: AppProtocol
@@ -63,4 +75,8 @@ extension AppVersion: AppProtocol {
public var url: URL? {
return self.downloadURL
}
public var storeApp: StoreApp? {
return self.app
}
}