Respond to CR.

This commit is contained in:
Matthew Chen 2017-12-07 17:29:47 -05:00
parent 89db8b3a44
commit 11b4848530
6 changed files with 33 additions and 36 deletions

View File

@ -2482,9 +2482,8 @@ typedef NS_ENUM(NSInteger, MessagesRangeSizeMode) {
[dataSource setSourceFilename:filename];
// "Document picker" attachments _SHOULD NOT_ be resized, if possible.
SignalAttachment *attachment = [SignalAttachment attachmentWithDataSource:dataSource
dataUTI:type
attachmentQuality:TSAttachmentQualityOriginal];
SignalAttachment *attachment =
[SignalAttachment attachmentWithDataSource:dataSource dataUTI:type imageQuality:TSImageQualityOriginal];
[self tryToSendAttachmentIfApproved:attachment];
}
@ -2613,7 +2612,7 @@ typedef NS_ENUM(NSInteger, MessagesRangeSizeMode) {
[SignalAttachment imageAttachmentWithImage:imageFromCamera
dataUTI:(NSString *)kUTTypeJPEG
filename:filename
attachmentQuality:TSAttachmentQualityCompact];
imageQuality:TSImageQualityCompact];
if (!attachment || [attachment hasError]) {
DDLogWarn(@"%@ %s Invalid attachment: %@.",
self.logTag,
@ -2664,7 +2663,7 @@ typedef NS_ENUM(NSInteger, MessagesRangeSizeMode) {
SignalAttachment *attachment =
[SignalAttachment attachmentWithDataSource:dataSource
dataUTI:dataUTI
attachmentQuality:TSAttachmentQualityMedium];
imageQuality:TSImageQualityMedium];
[self dismissViewControllerAnimated:YES
completion:^{
OWSAssert([NSThread isMainThread]);
@ -2754,7 +2753,7 @@ typedef NS_ENUM(NSInteger, MessagesRangeSizeMode) {
SignalAttachment *attachment =
[SignalAttachment attachmentWithDataSource:dataSource
dataUTI:(NSString *)kUTTypeMPEG4
attachmentQuality:TSAttachmentQualityOriginal];
imageQuality:TSImageQualityOriginal];
if (!attachment || [attachment hasError]) {
DDLogError(@"%@ %s Invalid attachment: %@.",
self.logTag,
@ -3858,7 +3857,7 @@ typedef NS_ENUM(NSInteger, MessagesRangeSizeMode) {
DataSource *_Nullable dataSource = [DataSourceValue dataSourceWithOversizeText:text];
SignalAttachment *attachment = [SignalAttachment attachmentWithDataSource:dataSource
dataUTI:kOversizeTextAttachmentUTI
attachmentQuality:TSAttachmentQualityOriginal];
imageQuality:TSImageQualityOriginal];
message =
[ThreadUtil sendMessageWithAttachment:attachment inThread:self.thread messageSender:self.messageSender];
} else {

View File

@ -378,9 +378,8 @@ NS_ASSUME_NONNULL_BEGIN
NSString *utiType = [MIMETypeUtil utiTypeForFileExtension:filename.pathExtension];
DataSource *_Nullable dataSource = [DataSourcePath dataSourceWithFilePath:filePath];
[dataSource setSourceFilename:filename];
SignalAttachment *attachment = [SignalAttachment attachmentWithDataSource:dataSource
dataUTI:utiType
attachmentQuality:TSAttachmentQualityOriginal];
SignalAttachment *attachment =
[SignalAttachment attachmentWithDataSource:dataSource dataUTI:utiType imageQuality:TSImageQualityOriginal];
OWSAssert(attachment);
if ([attachment hasError]) {
DDLogError(@"attachment[%@]: %@", [attachment sourceFilename], [attachment errorName]);
@ -645,7 +644,7 @@ NS_ASSUME_NONNULL_BEGIN
DataSource *_Nullable dataSource = [DataSourceValue dataSourceWithOversizeText:message];
SignalAttachment *attachment = [SignalAttachment attachmentWithDataSource:dataSource
dataUTI:kOversizeTextAttachmentUTI
attachmentQuality:TSAttachmentQualityOriginal];
imageQuality:TSImageQualityOriginal];
[ThreadUtil sendMessageWithAttachment:attachment inThread:thread messageSender:messageSender];
}
@ -671,9 +670,8 @@ NS_ASSUME_NONNULL_BEGIN
OWSMessageSender *messageSender = [Environment current].messageSender;
DataSource *_Nullable dataSource =
[DataSourceValue dataSourceWithData:[self createRandomNSDataOfSize:length] utiType:uti];
SignalAttachment *attachment = [SignalAttachment attachmentWithDataSource:dataSource
dataUTI:uti
attachmentQuality:TSAttachmentQualityOriginal];
SignalAttachment *attachment =
[SignalAttachment attachmentWithDataSource:dataSource dataUTI:uti imageQuality:TSImageQualityOriginal];
[ThreadUtil sendMessageWithAttachment:attachment inThread:thread messageSender:messageSender ignoreErrors:YES];
}
+ (OWSSignalServiceProtosEnvelope *)createEnvelopeForThread:(TSThread *)thread

View File

@ -372,7 +372,7 @@ class GifPickerViewController: OWSViewController, UISearchBarDelegate, UICollect
owsFail("\(strongSelf.TAG) couldn't load asset.")
return
}
let attachment = SignalAttachment.imageAttachment(dataSource: dataSource, dataUTI: asset.rendition.utiType)
let attachment = SignalAttachment.attachment(dataSource: dataSource, dataUTI: asset.rendition.utiType, imageQuality: .original)
strongSelf.delegate?.gifPickerDidSelect(attachment: attachment)

View File

@ -434,7 +434,7 @@ class MessageDetailViewController: OWSViewController, UIScrollViewDelegate {
let contentType = attachment.contentType
if let dataUTI = MIMETypeUtil.utiType(forMIMEType: contentType) {
let attachment = SignalAttachment.attachment(dataSource: dataSource, dataUTI: dataUTI)
let attachment = SignalAttachment.attachment(dataSource: dataSource, dataUTI: dataUTI, imageQuality: .original)
let mediaMessageView = MediaMessageView(attachment: attachment, mode: .small)
mediaMessageView.backgroundColor = UIColor.white
self.mediaMessageView = mediaMessageView

View File

@ -54,7 +54,7 @@ extension SignalAttachmentError: LocalizedError {
}
@objc
public enum TSImageQuality: UInt {
public enum TSImageQualityTier: UInt {
case original
case high
case mediumHigh
@ -64,12 +64,12 @@ public enum TSImageQuality: UInt {
}
@objc
public enum TSAttachmentQuality: UInt {
public enum TSImageQuality: UInt {
case original
case medium
case compact
func imageQuality() -> TSImageQuality {
func imageQualityTier() -> TSImageQualityTier {
switch self {
case .original:
return .original
@ -470,7 +470,7 @@ public class SignalAttachment: NSObject {
}
let dataSource = DataSourceValue.dataSource(with:data, utiType: dataUTI)
// Pasted images _SHOULD _NOT_ be resized, if possible.
return imageAttachment(dataSource : dataSource, dataUTI : dataUTI, attachmentQuality:.original)
return attachment(dataSource : dataSource, dataUTI : dataUTI, imageQuality:.original)
}
}
for dataUTI in videoUTISet {
@ -529,7 +529,7 @@ public class SignalAttachment: NSObject {
// NOTE: The attachment returned by this method may not be valid.
// Check the attachment's error property.
@objc
public class func imageAttachment(dataSource: DataSource?, dataUTI: String, attachmentQuality: TSAttachmentQuality) -> SignalAttachment {
private class func imageAttachment(dataSource: DataSource?, dataUTI: String, imageQuality: TSImageQuality) -> SignalAttachment {
assert(dataUTI.count > 0)
assert(dataSource != nil)
@ -568,7 +568,7 @@ public class SignalAttachment: NSObject {
}
attachment.cachedImage = image
if isInputImageValidOutputImage(image: image, dataSource: dataSource, dataUTI: dataUTI, attachmentQuality:attachmentQuality) {
if isInputImageValidOutputImage(image: image, dataSource: dataSource, dataUTI: dataUTI, imageQuality:imageQuality) {
if let sourceFilename = dataSource.sourceFilename,
let sourceFileExtension = sourceFilename.fileExtension,
["heic", "heif"].contains(sourceFileExtension.lowercased()) {
@ -593,13 +593,13 @@ public class SignalAttachment: NSObject {
}
Logger.verbose("\(TAG) Compressing attachment as image/jpeg, \(dataSource.dataLength()) bytes")
return compressImageAsJPEG(image : image, attachment : attachment, filename:dataSource.sourceFilename, attachmentQuality:attachmentQuality)
return compressImageAsJPEG(image : image, attachment : attachment, filename:dataSource.sourceFilename, imageQuality:imageQuality)
}
}
// If the proposed attachment already conforms to the
// file size and content size limits, don't recompress it.
private class func isInputImageValidOutputImage(image: UIImage?, dataSource: DataSource?, dataUTI: String, attachmentQuality: TSAttachmentQuality) -> Bool {
private class func isInputImageValidOutputImage(image: UIImage?, dataSource: DataSource?, dataUTI: String, imageQuality: TSImageQuality) -> Bool {
guard let image = image else {
return false
}
@ -610,9 +610,9 @@ public class SignalAttachment: NSObject {
return false
}
let imageQuality = attachmentQuality.imageQuality()
let imageQualityTier = imageQuality.imageQualityTier()
let maxSize = maxSizeForImage(image: image,
imageUploadQuality:imageQuality)
imageUploadQuality:imageQualityTier)
if image.size.width <= maxSize &&
image.size.height <= maxSize &&
dataSource.dataLength() <= kMaxFileSizeImage {
@ -626,7 +626,7 @@ public class SignalAttachment: NSObject {
// NOTE: The attachment returned by this method may nil or not be valid.
// Check the attachment's error property.
@objc
public class func imageAttachment(image: UIImage?, dataUTI: String, filename: String?, attachmentQuality: TSAttachmentQuality) -> SignalAttachment {
public class func imageAttachment(image: UIImage?, dataUTI: String, filename: String?, imageQuality: TSImageQuality) -> SignalAttachment {
assert(dataUTI.count > 0)
guard let image = image else {
@ -644,13 +644,13 @@ public class SignalAttachment: NSObject {
attachment.cachedImage = image
Logger.verbose("\(TAG) Writing \(attachment.mimeType) as image/jpeg")
return compressImageAsJPEG(image : image, attachment : attachment, filename:filename, attachmentQuality:attachmentQuality)
return compressImageAsJPEG(image : image, attachment : attachment, filename:filename, imageQuality:imageQuality)
}
private class func compressImageAsJPEG(image: UIImage, attachment: SignalAttachment, filename: String?, attachmentQuality: TSAttachmentQuality) -> SignalAttachment {
private class func compressImageAsJPEG(image: UIImage, attachment: SignalAttachment, filename: String?, imageQuality: TSImageQuality) -> SignalAttachment {
assert(attachment.error == nil)
var imageUploadQuality = attachmentQuality.imageQuality()
var imageUploadQuality = imageQuality.imageQualityTier()
while true {
let maxSize = maxSizeForImage(image: image, imageUploadQuality:imageUploadQuality)
@ -718,7 +718,7 @@ public class SignalAttachment: NSObject {
return updatedImage!
}
private class func maxSizeForImage(image: UIImage, imageUploadQuality: TSImageQuality) -> CGFloat {
private class func maxSizeForImage(image: UIImage, imageUploadQuality: TSImageQualityTier) -> CGFloat {
switch imageUploadQuality {
case .original:
return max(image.size.width, image.size.height)
@ -735,7 +735,7 @@ public class SignalAttachment: NSObject {
}
}
private class func jpegCompressionQuality(imageUploadQuality: TSImageQuality) -> CGFloat {
private class func jpegCompressionQuality(imageUploadQuality: TSImageQualityTier) -> CGFloat {
switch imageUploadQuality {
case .original:
return 1
@ -821,9 +821,9 @@ public class SignalAttachment: NSObject {
// NOTE: The attachment returned by this method may not be valid.
// Check the attachment's error property.
@objc
public class func attachment(dataSource: DataSource?, dataUTI: String, attachmentQuality: TSAttachmentQuality) -> SignalAttachment {
public class func attachment(dataSource: DataSource?, dataUTI: String, imageQuality: TSImageQuality = .original) -> SignalAttachment {
if inputImageUTISet.contains(dataUTI) {
return imageAttachment(dataSource : dataSource, dataUTI : dataUTI, attachmentQuality:attachmentQuality)
return imageAttachment(dataSource : dataSource, dataUTI : dataUTI, imageQuality:imageQuality)
} else if videoUTISet.contains(dataUTI) {
return videoAttachment(dataSource : dataSource, dataUTI : dataUTI)
} else if audioUTISet.contains(dataUTI) {
@ -837,7 +837,7 @@ public class SignalAttachment: NSObject {
public class func empty() -> SignalAttachment {
return SignalAttachment.attachment(dataSource : DataSourceValue.emptyDataSource(),
dataUTI: kUTTypeContent as String,
attachmentQuality:.original)
imageQuality:.original)
}
// MARK: Helper Methods

View File

@ -435,7 +435,7 @@ public class ShareViewController: UINavigationController, ShareViewDelegate, SAE
}
}
let attachment = SignalAttachment.attachment(dataSource: dataSource, dataUTI: specificUTIType, attachmentQuality:.medium)
let attachment = SignalAttachment.attachment(dataSource: dataSource, dataUTI: specificUTIType, imageQuality:.medium)
return attachment
}