diff --git a/Signal/src/ViewControllers/MessagesViewController.m b/Signal/src/ViewControllers/MessagesViewController.m index 9db3bdadc..9853a64d5 100644 --- a/Signal/src/ViewControllers/MessagesViewController.m +++ b/Signal/src/ViewControllers/MessagesViewController.m @@ -2263,8 +2263,7 @@ typedef enum : NSUInteger { OWSAssert(attachmentData); OWSAssert(type); OWSAssert(filename); - SignalAttachment *attachment = - [[SignalAttachment alloc] initWithData:attachmentData dataUTI:type filename:filename]; + SignalAttachment *attachment = [SignalAttachment attachmentWithData:attachmentData dataUTI:type filename:filename]; [self tryToSendAttachmentIfApproved:attachment]; } diff --git a/Signal/src/ViewControllers/SignalAttachment.swift b/Signal/src/ViewControllers/SignalAttachment.swift index 62ba4a0f2..1483edecd 100644 --- a/Signal/src/ViewControllers/SignalAttachment.swift +++ b/Signal/src/ViewControllers/SignalAttachment.swift @@ -586,7 +586,25 @@ class SignalAttachment: NSObject { dataUTI : dataUTI, validUTISet : nil, maxFileSize : kMaxFileSizeGeneric, - filename : filename) + filename : filename) + } + + // MARK: Attachments + + // Factory method for attachments of any kind. + // + // NOTE: The attachment returned by this method may not be valid. + // Check the attachment's error property. + public class func attachment(data: Data?, dataUTI: String, filename: String?) -> SignalAttachment { + if inputImageUTISet.contains(dataUTI) { + return imageAttachment(data : data, dataUTI : dataUTI, filename: filename) + } else if videoUTISet.contains(dataUTI) { + return videoAttachment(data : data, dataUTI : dataUTI, filename: filename) + } else if audioUTISet.contains(dataUTI) { + return audioAttachment(data : data, dataUTI : dataUTI, filename: filename) + } else { + return genericAttachment(data : data, dataUTI : dataUTI, filename: filename) + } } // MARK: Helper Methods