diff --git a/AltStore/Settings/PatreonViewController.swift b/AltStore/Settings/PatreonViewController.swift index 26ff280a..37c42707 100644 --- a/AltStore/Settings/PatreonViewController.swift +++ b/AltStore/Settings/PatreonViewController.swift @@ -208,8 +208,21 @@ private extension PatreonViewController let account = try result.get() try account.managedObjectContext?.save() - DispatchQueue.main.async { - self.update() + // Update sources to show any Patreon-only apps. + AppManager.shared.fetchSources { result in + do + { + let (_, context) = try result.get() + try context.save() + } + catch + { + Logger.main.error("Failed to update sources after authenticating Patreon account. \(error.localizedDescription, privacy: .public)") + } + + DispatchQueue.main.async { + self.update() + } } } catch is CancellationError diff --git a/AltStoreCore/Patreon/PatreonAPI.swift b/AltStoreCore/Patreon/PatreonAPI.swift index 07e119b8..4a84d97e 100644 --- a/AltStoreCore/Patreon/PatreonAPI.swift +++ b/AltStoreCore/Patreon/PatreonAPI.swift @@ -245,7 +245,8 @@ public extension PatreonAPI let accounts = PatreonAccount.all(in: context, requestProperties: [\.returnsObjectsAsFaults: true]) accounts.forEach(context.delete(_:)) - self.deactivateBetaApps(in: context) + let pledgeRequiredApps = StoreApp.all(satisfying: NSPredicate(format: "%K == YES", #keyPath(StoreApp.isPledgeRequired)), in: context) + pledgeRequiredApps.forEach { $0.isPledged = false } try context.save() @@ -456,15 +457,6 @@ private extension PatreonAPI task.resume() } - - func deactivateBetaApps(in context: NSManagedObjectContext) - { - let predicate = NSPredicate(format: "%K != %@ AND %K != nil AND %K == YES", - #keyPath(InstalledApp.bundleIdentifier), StoreApp.altstoreAppID, #keyPath(InstalledApp.storeApp), #keyPath(InstalledApp.storeApp.isBeta)) - - let installedApps = InstalledApp.all(satisfying: predicate, in: context) - installedApps.forEach { $0.isActive = false } - } } extension PatreonAPI: WKURLSchemeHandler