From adaf7a25604d64a5e8a6f483ce2d4aebacbe1b65 Mon Sep 17 00:00:00 2001 From: Riley Testut Date: Tue, 28 Mar 2023 14:37:47 -0500 Subject: [PATCH] Fixes error fetching Friend Zone patrons due to unexpected nil name --- AltStore/Operations/UpdatePatronsOperation.swift | 2 +- AltStoreCore/Model/ManagedPatron.swift | 7 +++++-- AltStoreCore/Patreon/Patron.swift | 4 ++-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/AltStore/Operations/UpdatePatronsOperation.swift b/AltStore/Operations/UpdatePatronsOperation.swift index 54000883..d2594572 100644 --- a/AltStore/Operations/UpdatePatronsOperation.swift +++ b/AltStore/Operations/UpdatePatronsOperation.swift @@ -70,7 +70,7 @@ class UpdatePatronsOperation: ResultOperation do { let patrons = try result.get() - let managedPatrons = patrons.map { ManagedPatron(patron: $0, context: self.context) } + let managedPatrons = patrons.compactMap { ManagedPatron(patron: $0, context: self.context) } let patronIDs = Set(managedPatrons.map { $0.identifier }) let nonFriendZonePredicate = NSPredicate(format: "NOT (%K IN %@)", #keyPath(ManagedPatron.identifier), patronIDs) diff --git a/AltStoreCore/Model/ManagedPatron.swift b/AltStoreCore/Model/ManagedPatron.swift index a482853a..1e628b40 100644 --- a/AltStoreCore/Model/ManagedPatron.swift +++ b/AltStoreCore/Model/ManagedPatron.swift @@ -19,11 +19,14 @@ public class ManagedPatron: NSManagedObject, Fetchable super.init(entity: entity, insertInto: context) } - public init(patron: Patron, context: NSManagedObjectContext) + public init?(patron: Patron, context: NSManagedObjectContext) { + // Only cache Patrons with non-nil names. + guard let name = patron.name else { return nil } + super.init(entity: ManagedPatron.entity(), insertInto: context) - self.name = patron.name + self.name = name self.identifier = patron.identifier } } diff --git a/AltStoreCore/Patreon/Patron.swift b/AltStoreCore/Patreon/Patron.swift index d716b86c..ef55bab4 100644 --- a/AltStoreCore/Patreon/Patron.swift +++ b/AltStoreCore/Patreon/Patron.swift @@ -14,7 +14,7 @@ extension PatreonAPI { struct Attributes: Decodable { - var full_name: String + var full_name: String? var patron_status: String? } @@ -54,7 +54,7 @@ extension Patron public class Patron { - public var name: String + public var name: String? public var identifier: String public var status: Status