// // DataSourceFacade+Model.swift // Mastodon // // Created by MainasuK on 2022-1-13. // import Foundation import CoreData import CoreDataStack import MastodonUI extension DataSourceFacade { static func status( managedObjectContext: NSManagedObjectContext, status: ManagedObjectRecord, target: StatusTarget ) async -> ManagedObjectRecord? { return try? await managedObjectContext.perform { guard let object = status.object(in: managedObjectContext) else { return nil } return DataSourceFacade.status(status: object, target: target) .flatMap { ManagedObjectRecord(objectID: $0.objectID) } } } } extension DataSourceFacade { static func author( managedObjectContext: NSManagedObjectContext, status: ManagedObjectRecord, target: StatusTarget ) async -> ManagedObjectRecord? { return try? await managedObjectContext.perform { guard let object = status.object(in: managedObjectContext) else { return nil } return DataSourceFacade.status(status: object, target: target) .flatMap { $0.author } .flatMap { ManagedObjectRecord(objectID: $0.objectID) } } } } extension DataSourceFacade { static func status( status: Status, target: StatusTarget ) -> Status? { switch target { case .status: return status.reblog ?? status case .repost: return status } } }