From 21766732dd220d6064bce9891a8b9647d4ce0694 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Mon, 27 Mar 2017 11:02:28 -0400 Subject: [PATCH] Respond to CR. // FREEBIE --- .../view controllers/MessagesViewController.m | 12 ++--- .../view controllers/SignalAttachment.swift | 50 ++++++++++++------- 2 files changed, 39 insertions(+), 23 deletions(-) diff --git a/Signal/src/view controllers/MessagesViewController.m b/Signal/src/view controllers/MessagesViewController.m index b8595cafe..d713e6810 100644 --- a/Signal/src/view controllers/MessagesViewController.m +++ b/Signal/src/view controllers/MessagesViewController.m @@ -1950,7 +1950,7 @@ typedef enum : NSUInteger { DDLogWarn(@"%@ %s Invalid attachment: %@.", self.tag, __PRETTY_FUNCTION__, - attachment ? [attachment errorMessage] : @"Missing data"); + attachment ? [attachment errorName] : @"Missing data"); [self showErrorAlertForAttachment:attachment]; failedToPickAttachment(nil); } else { @@ -1997,7 +1997,7 @@ typedef enum : NSUInteger { DDLogWarn(@"%@ %s Invalid attachment: %@.", self.tag, __PRETTY_FUNCTION__, - attachment ? [attachment errorMessage] : @"Missing data"); + attachment ? [attachment errorName] : @"Missing data"); [self showErrorAlertForAttachment:attachment]; failedToPickAttachment(nil); } else { @@ -2083,7 +2083,7 @@ typedef enum : NSUInteger { DDLogWarn(@"%@ %s Invalid attachment: %@.", self.tag, __PRETTY_FUNCTION__, - attachment ? [attachment errorMessage] : @"Missing data"); + attachment ? [attachment errorName] : @"Missing data"); [self showErrorAlertForAttachment:attachment]; } else { [self sendMessageAttachment:attachment]; @@ -2319,7 +2319,7 @@ typedef enum : NSUInteger { DDLogWarn(@"%@ %s Invalid attachment: %@.", self.tag, __PRETTY_FUNCTION__, - attachment ? [attachment errorMessage] : @"Missing data"); + attachment ? [attachment errorName] : @"Missing data"); [self showErrorAlertForAttachment:attachment]; } else { [self sendMessageAttachment:attachment]; @@ -2559,7 +2559,7 @@ typedef enum : NSUInteger { DDLogWarn(@"%@ %s Invalid attachment: %@.", self.tag, __PRETTY_FUNCTION__, - attachment ? [attachment errorMessage] : @"Missing data"); + attachment ? [attachment errorName] : @"Missing data"); [self showErrorAlertForAttachment:attachment]; } else { __weak MessagesViewController *weakSelf = self; @@ -2578,7 +2578,7 @@ typedef enum : NSUInteger { OWSAssert(attachment == nil || [attachment hasError]); NSString *errorMessage = (attachment - ? [attachment errorMessage] + ? [attachment localizedErrorDescription] : [SignalAttachment missingDataErrorMessage]); DDLogError(@"%@ %s: %@", diff --git a/Signal/src/view controllers/SignalAttachment.swift b/Signal/src/view controllers/SignalAttachment.swift index 12b20761f..da505717b 100644 --- a/Signal/src/view controllers/SignalAttachment.swift +++ b/Signal/src/view controllers/SignalAttachment.swift @@ -5,7 +5,7 @@ import Foundation import MobileCoreServices -enum SignalAttachmentError: Int { +enum SignalAttachmentError: Error { case missingData case fileSizeTooLarge case invalidData @@ -14,7 +14,26 @@ enum SignalAttachmentError: Int { case invalidFileFormat } -enum TSImageQuality: Int { +extension SignalAttachmentError: LocalizedError { + public var errorDescription: String { + switch self { + case .missingData: + return NSLocalizedString("ATTACHMENT_ERROR_MISSING_DATA", comment: "Attachment error message for attachments without any data") + case .fileSizeTooLarge: + return NSLocalizedString("ATTACHMENT_ERROR_FILE_SIZE_TOO_LARGE", comment: "Attachment error message for attachments whose data exceed file size limits") + case .invalidData: + return NSLocalizedString("ATTACHMENT_ERROR_INVALID_DATA", comment: "Attachment error message for attachments with invalid data") + case .couldNotParseImage: + return NSLocalizedString("ATTACHMENT_ERROR_COULD_NOT_PARSE_IMAGE", comment: "Attachment error message for image attachments which cannot be parsed") + case .couldNotConvertToJpeg: + return NSLocalizedString("ATTACHMENT_ERROR_COULD_NOT_CONVERT_TO_JPEG", comment: "Attachment error message for image attachments which could not be converted to JPEG") + case .invalidFileFormat: + return NSLocalizedString("ATTACHMENT_ERROR_INVALID_FILE_FORMAT", comment: "Attachment error message for attachments with an invalid file format") + } + } +} + +enum TSImageQuality { case uncropped case high case medium @@ -91,31 +110,28 @@ class SignalAttachment: NSObject { return error != nil } - var errorMessage: String? { + var errorName: String? { guard let error = error else { // This method should only be called if there is an error. assert(false) return nil } - switch error { - case .missingData: - return NSLocalizedString("ATTACHMENT_ERROR_MISSING_DATA", comment: "Attachment error message for attachments without any data") - case .fileSizeTooLarge: - return NSLocalizedString("ATTACHMENT_ERROR_FILE_SIZE_TOO_LARGE", comment: "Attachment error message for attachments whose data exceed file size limits") - case .invalidData: - return NSLocalizedString("ATTACHMENT_ERROR_INVALID_DATA", comment: "Attachment error message for attachments with invalid data") - case .couldNotParseImage: - return NSLocalizedString("ATTACHMENT_ERROR_COULD_NOT_PARSE_IMAGE", comment: "Attachment error message for image attachments which cannot be parsed") - case .couldNotConvertToJpeg: - return NSLocalizedString("ATTACHMENT_ERROR_COULD_NOT_CONVERT_TO_JPEG", comment: "Attachment error message for image attachments which could not be converted to JPEG") - case .invalidFileFormat: - return NSLocalizedString("ATTACHMENT_ERROR_INVALID_FILE_FORMAT", comment: "Attachment error message for attachments with an invalid file format") + return "\(error)" + } + + var localizedErrorDescription: String? { + guard let error = self.error else { + // This method should only be called if there is an error. + assert(false) + return nil } + + return "\(error.errorDescription)" } class var missingDataErrorMessage: String { - return NSLocalizedString("ATTACHMENT_ERROR_MISSING_DATA", comment: "Attachment error message for attachments without any data") + return SignalAttachmentError.missingData.errorDescription } // Returns the MIME type for this attachment or nil if no MIME type