From 933cec99ce52e47f302117e8ebe57dbaea3679fc Mon Sep 17 00:00:00 2001 From: Riley Testut Date: Wed, 29 Nov 2023 17:37:21 -0600 Subject: [PATCH] =?UTF-8?q?Updates=20apps=E2=80=99=20pledge=20status=20upo?= =?UTF-8?q?n=20(de-)authenticating=20with=20Patreon?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit No longer deactivates apps whenever pledge expires. --- AltStore/Settings/PatreonViewController.swift | 17 +++++++++++++++-- AltStoreCore/Patreon/PatreonAPI.swift | 19 ++----------------- 2 files changed, 17 insertions(+), 19 deletions(-) diff --git a/AltStore/Settings/PatreonViewController.swift b/AltStore/Settings/PatreonViewController.swift index c414ab13..52506b67 100644 --- a/AltStore/Settings/PatreonViewController.swift +++ b/AltStore/Settings/PatreonViewController.swift @@ -197,8 +197,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 305be298..ae9744b0 100644 --- a/AltStoreCore/Patreon/PatreonAPI.swift +++ b/AltStoreCore/Patreon/PatreonAPI.swift @@ -242,7 +242,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() @@ -270,13 +271,6 @@ public extension PatreonAPI do { let account = try result.get() - - if let context = account.managedObjectContext, !account.isPatron - { - // Deactivate all beta apps now that we're no longer a patron. - self.deactivateBetaApps(in: context) - } - try account.managedObjectContext?.save() } catch @@ -453,15 +447,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