Updates apps’ pledge status upon (de-)authenticating with Patreon

No longer deactivates apps whenever pledge expires.
This commit is contained in:
Riley Testut
2023-11-29 17:37:21 -06:00
committed by Magesh K
parent 947b31881f
commit 9f7f73f835
2 changed files with 17 additions and 12 deletions

View File

@@ -208,10 +208,23 @@ private extension PatreonViewController
let account = try result.get() let account = try result.get()
try account.managedObjectContext?.save() try account.managedObjectContext?.save()
// 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 { DispatchQueue.main.async {
self.update() self.update()
} }
} }
}
catch is CancellationError catch is CancellationError
{ {
// Clear in-app browser cache in case they are signed into wrong account. // Clear in-app browser cache in case they are signed into wrong account.

View File

@@ -245,7 +245,8 @@ public extension PatreonAPI
let accounts = PatreonAccount.all(in: context, requestProperties: [\.returnsObjectsAsFaults: true]) let accounts = PatreonAccount.all(in: context, requestProperties: [\.returnsObjectsAsFaults: true])
accounts.forEach(context.delete(_:)) 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() try context.save()
@@ -456,15 +457,6 @@ private extension PatreonAPI
task.resume() 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 extension PatreonAPI: WKURLSchemeHandler