Rocket.Chat.ReactNative/ios/RocketChat Watch App/Database/Model/AttachmentModel.swift

43 lines
1.1 KiB
Swift

import CoreData
final class AttachmentModel {
private let context: NSManagedObjectContext
init(context: NSManagedObjectContext) {
self.context = context
}
func upsert(_ newAttachment: MergedRoom.Message.Attachment) -> Attachment? {
let identifier = newAttachment.imageURL ?? newAttachment.audioURL
guard let identifier = identifier?.absoluteString ?? newAttachment.title else {
return nil
}
let attachment = attachment(id: identifier, in: context)
attachment.imageURL = newAttachment.imageURL
attachment.msg = newAttachment.description
attachment.width = newAttachment.dimensions?.width ?? 0
attachment.height = newAttachment.dimensions?.height ?? 0
return attachment
}
}
extension AttachmentModel {
private func attachment(id: String, in context: NSManagedObjectContext) -> Attachment {
let request = Attachment.fetchRequest()
request.predicate = NSPredicate(format: "id == %@", id)
guard let attachment = try? context.fetch(request).first else {
let attachment = Attachment(context: context)
attachment.id = id
return attachment
}
return attachment
}
}