// // AccountPreferences.swift // Tusker // // Created by Shadowfacts on 12/19/22. // Copyright © 2022 Shadowfacts. All rights reserved. // import Foundation import CoreData import Pachyderm @objc(AccountPreferences) public final class AccountPreferences: NSManagedObject { @nonobjc class func fetchRequest(account: LocalData.UserAccountInfo) -> NSFetchRequest { let req = NSFetchRequest(entityName: "AccountPreferences") req.predicate = NSPredicate(format: "accountID = %@", account.id) req.sortDescriptors = [NSSortDescriptor(key: "createdAt", ascending: true)] return req } @NSManaged public var accountID: String @NSManaged var createdAt: Date @NSManaged var pinnedTimelinesData: Data? @LazilyDecoding(from: \AccountPreferences.pinnedTimelinesData, fallback: AccountPreferences.defaultPinnedTimelines) var pinnedTimelines: [PinnedTimeline] static func `default`(account: LocalData.UserAccountInfo, context: NSManagedObjectContext) -> AccountPreferences { let prefs = AccountPreferences(context: context) prefs.accountID = account.id prefs.createdAt = Date() prefs.pinnedTimelines = Self.defaultPinnedTimelines return prefs } private static let defaultPinnedTimelines = [PinnedTimeline.home, .public(local: true), .public(local: false)] }