Hides app updates that don’t support device’s OS version

This commit is contained in:
Riley Testut
2022-11-16 14:11:11 -06:00
committed by Magesh K
parent f82743af98
commit 9f38601102
5 changed files with 32 additions and 16 deletions

View File

@@ -164,7 +164,21 @@ public extension InstalledApp
{
let fetchRequest = InstalledApp.fetchRequest() as NSFetchRequest<InstalledApp>
fetchRequest.predicate = NSPredicate(format: "%K == YES AND %K != nil AND %K != %K",
#keyPath(InstalledApp.isActive), #keyPath(InstalledApp.storeApp), #keyPath(InstalledApp.version), #keyPath(InstalledApp.storeApp.latestSupportedVersion.version))
#keyPath(InstalledApp.isActive),
#keyPath(InstalledApp.storeApp),
#keyPath(InstalledApp.version), #keyPath(InstalledApp.storeApp.latestVersionString))
return fetchRequest
}
class func supportedUpdatesFetchRequest() -> NSFetchRequest<InstalledApp>
{
let predicate = NSPredicate(format: "%K != nil AND %K != %K",
#keyPath(InstalledApp.storeApp.latestSupportedVersion),
#keyPath(InstalledApp.version), #keyPath(InstalledApp.storeApp.latestSupportedVersion.version))
let fetchRequest = InstalledApp.updatesFetchRequest()
fetchRequest.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [fetchRequest.predicate, predicate].compactMap { $0 })
return fetchRequest
}

View File

@@ -22,7 +22,7 @@ fileprivate extension NSManagedObject
}
var storeAppVersion: String? {
let version = self.value(forKey: #keyPath(StoreApp._version)) as? String
let version = self.value(forKey: #keyPath(StoreApp.latestVersionString)) as? String
return version
}

View File

@@ -106,9 +106,9 @@ public class StoreApp: NSManagedObject, Decodable, Fetchable
@NSManaged public private(set) var iconURL: URL
@NSManaged public private(set) var screenshotURLs: [URL]
@NSManaged @objc(version) internal var _version: String
@NSManaged @objc(versionDate) internal var _versionDate: Date
@NSManaged @objc(versionDescription) internal var _versionDescription: String?
@NSManaged @objc(version) public private(set) var latestVersionString: String
@NSManaged @objc(versionDate) internal private(set) var _versionDate: Date
@NSManaged @objc(versionDescription) internal private(set) var _versionDescription: String?
@NSManaged @objc(downloadURL) internal var _downloadURL: URL
@NSManaged public private(set) var platformURLs: PlatformURLs?
@@ -356,7 +356,7 @@ internal extension StoreApp
// Preserve backwards compatibility by assigning legacy property values.
guard let latestVersion = versions.first else { preconditionFailure("StoreApp must have at least one AppVersion.") }
self._version = latestVersion.version
self.latestVersionString = latestVersion.version
self._versionDate = latestVersion.date
self._versionDescription = latestVersion.localizedDescription
self._downloadURL = latestVersion.downloadURL