From 8a9206d7e7079e7d71a49c0c9e051db9ee6c9d43 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Tue, 28 Mar 2017 17:48:24 -0400 Subject: [PATCH] Improve handling of incomplete and failed attachment downloads. // FREEBIE --- .../Models/TSMessageAdapaters/TSMessageAdapter.m | 16 ++++++++++------ .../view controllers/MessagesViewController.m | 2 +- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/Signal/src/Models/TSMessageAdapaters/TSMessageAdapter.m b/Signal/src/Models/TSMessageAdapaters/TSMessageAdapter.m index 935fa772d..92bac48d8 100644 --- a/Signal/src/Models/TSMessageAdapaters/TSMessageAdapter.m +++ b/Signal/src/Models/TSMessageAdapaters/TSMessageAdapter.m @@ -155,12 +155,16 @@ TSAttachmentPointer *pointer = (TSAttachmentPointer *)attachment; adapter.messageType = TSInfoMessageAdapter; - if (pointer.isDownloading) { - adapter.messageBody = NSLocalizedString(@"ATTACHMENT_DOWNLOADING", nil); - } else if (pointer.hasFailed) { - adapter.messageBody = NSLocalizedString(@"ATTACHMENT_DOWNLOAD_FAILED", nil); - } else { - adapter.messageBody = NSLocalizedString(@"ATTACHMENT_QUEUED", nil); + switch (pointer.state) { + case TSAttachmentPointerStateEnqueued: + adapter.messageBody = NSLocalizedString(@"ATTACHMENT_QUEUED", nil); + break; + case TSAttachmentPointerStateDownloading: + adapter.messageBody = NSLocalizedString(@"ATTACHMENT_DOWNLOADING", nil); + break; + case TSAttachmentPointerStateFailed: + adapter.messageBody = NSLocalizedString(@"ATTACHMENT_DOWNLOAD_FAILED", nil); + break; } } else { DDLogError(@"We retrieved an attachment that doesn't have a known type : %@", diff --git a/Signal/src/view controllers/MessagesViewController.m b/Signal/src/view controllers/MessagesViewController.m index b12b1e158..5128cb5d1 100644 --- a/Signal/src/view controllers/MessagesViewController.m +++ b/Signal/src/view controllers/MessagesViewController.m @@ -1586,7 +1586,7 @@ typedef enum : NSUInteger { // FIXME possible for pointer to get stuck in isDownloading state if app is closed while downloading. // see: https://github.com/WhisperSystems/Signal-iOS/issues/1254 - if (!pointer.isDownloading) { + if (pointer.state != TSAttachmentPointerStateDownloading) { OWSAttachmentsProcessor *processor = [[OWSAttachmentsProcessor alloc] initWithAttachmentPointer:pointer networkManager:self.networkManager];