From 9b5379b3e253cec3619da318a53310e6ed951538 Mon Sep 17 00:00:00 2001 From: dtsbourg Date: Thu, 27 Nov 2014 13:10:49 +0100 Subject: [PATCH] Messages: Add a failed outgoing message cell --- Podfile.lock | 2 +- Signal/src/UIColor+OWS.h | 13 +++++++++---- Signal/src/UIColor+OWS.m | 13 +++++++++---- .../CodeVerificationViewController.m | 1 - .../src/view controllers/MessagesViewController.m | 5 +++++ .../view controllers/RegistrationViewController.m | 1 - Signal/src/view controllers/TSMessageAdapter.m | 9 +++++++++ 7 files changed, 33 insertions(+), 11 deletions(-) diff --git a/Podfile.lock b/Podfile.lock index 0bedffbb5..59640f653 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -83,7 +83,7 @@ EXTERNAL SOURCES: CHECKOUT OPTIONS: JSQMessagesViewController: - :commit: 5fc12f5cba461203046a6f0b2c62d1b1470197a4 + :commit: b22b7a4caf2d36ff9965b1970fea968a46898f4c :git: https://github.com/dtsbourg/JSQMessagesViewController SocketRocket: :commit: d0585af165 diff --git a/Signal/src/UIColor+OWS.h b/Signal/src/UIColor+OWS.h index 2262f27b4..fcad48de0 100644 --- a/Signal/src/UIColor+OWS.h +++ b/Signal/src/UIColor+OWS.h @@ -8,10 +8,15 @@ #import -@interface UIColor (UIColor_OWS) +@interface UIColor (OWS) + ++ (UIColor *) ows_blueColor; + ++ (UIColor *) ows_fadedBlueColor; + ++ (UIColor *) ows_darkBackgroundColor; + ++ (UIColor *) ows_darkGrayColor; -+(UIColor*) ows_blueColor; -+(UIColor*) ows_darkBackgroundColor; -+(UIColor*) ows_darkGrayColor; @end diff --git a/Signal/src/UIColor+OWS.m b/Signal/src/UIColor+OWS.m index 13282ca1d..e662d4624 100644 --- a/Signal/src/UIColor+OWS.m +++ b/Signal/src/UIColor+OWS.m @@ -8,22 +8,27 @@ #import "UIColor+OWS.h" -@implementation UIColor (UIColor_OWS) +@implementation UIColor (OWS) -+(UIColor*) ows_blueColor ++ (UIColor*) ows_blueColor { return [UIColor colorWithRed:0.f/255.f green:122.f/255.f blue:255.f/255.f alpha:1.0f]; } -+(UIColor*) ows_darkGrayColor ++ (UIColor*) ows_darkGrayColor { return [UIColor colorWithRed:81.f/255.f green:81.f/255.f blue:81.f/255.f alpha:1.0f]; } -+(UIColor*) ows_darkBackgroundColor ++ (UIColor*) ows_darkBackgroundColor { return [UIColor colorWithRed:35.0f/255.0f green:31.0f/255.0f blue:32.0f/255.0f alpha:1.0f]; } ++ (UIColor *) ows_fadedBlueColor +{ + return [UIColor colorWithRed:110.f/255.f green:178.f/255.f blue:1.0f alpha:1.0f]; +} + @end diff --git a/Signal/src/view controllers/CodeVerificationViewController.m b/Signal/src/view controllers/CodeVerificationViewController.m index 1008eec7d..0e7dd8025 100644 --- a/Signal/src/view controllers/CodeVerificationViewController.m +++ b/Signal/src/view controllers/CodeVerificationViewController.m @@ -45,7 +45,6 @@ [_challengeButton setEnabled:NO]; [_challengeTextField resignFirstResponder]; - //TODO: Lock UI interactions [self registerWithSuccess:^{ [Environment.getCurrent.phoneDirectoryManager forceUpdate]; diff --git a/Signal/src/view controllers/MessagesViewController.m b/Signal/src/view controllers/MessagesViewController.m index 5280d6ad0..66bc3550c 100644 --- a/Signal/src/view controllers/MessagesViewController.m +++ b/Signal/src/view controllers/MessagesViewController.m @@ -49,6 +49,7 @@ typedef enum : NSUInteger { @property (nonatomic, strong) YapDatabaseViewMappings *messageMappings; @property (nonatomic, retain) JSQMessagesBubbleImage *outgoingBubbleImageData; @property (nonatomic, retain) JSQMessagesBubbleImage *incomingBubbleImageData; +@property (nonatomic, retain) JSQMessagesBubbleImage *outgoingMessageFailedImageData; @end @@ -74,6 +75,7 @@ typedef enum : NSUInteger { self.outgoingBubbleImageData = [bubbleFactory outgoingMessagesBubbleImageWithColor:[UIColor jsq_messageBubbleBlueColor]]; self.incomingBubbleImageData = [bubbleFactory incomingMessagesBubbleImageWithColor:[UIColor jsq_messageBubbleLightGrayColor]]; + self.outgoingMessageFailedImageData = [bubbleFactory outgoingMessageFailedBubbleImageWithColor:[UIColor ows_fadedBlueColor]]; self.messageMappings = [[YapDatabaseViewMappings alloc] initWithGroups:@[self.thread.uniqueId] view:TSMessageDatabaseViewExtensionName]; @@ -191,6 +193,9 @@ typedef enum : NSUInteger { id message = [self messageAtIndexPath:indexPath]; if ([message.senderId isEqualToString:self.senderId]) { + if (message.messageState == TSOutgoingMessageStateUnsent || message.messageState == TSOutgoingMessageStateAttemptingOut) { + return self.outgoingMessageFailedImageData; + } return self.outgoingBubbleImageData; } diff --git a/Signal/src/view controllers/RegistrationViewController.m b/Signal/src/view controllers/RegistrationViewController.m index 05545a454..8fc14fc95 100644 --- a/Signal/src/view controllers/RegistrationViewController.m +++ b/Signal/src/view controllers/RegistrationViewController.m @@ -82,7 +82,6 @@ [self performSegueWithIdentifier:@"codeSent" sender:self]; } failure:^(NSURLSessionDataTask *task, NSError *error) { - //TODO: Re-enable button DDLogError(@"Registration failed with information %@", error.description); UIAlertView *registrationErrorAV = [[UIAlertView alloc]initWithTitle:REGISTER_ERROR_ALERT_VIEW_TITLE diff --git a/Signal/src/view controllers/TSMessageAdapter.m b/Signal/src/view controllers/TSMessageAdapter.m index 8db726586..24f927810 100644 --- a/Signal/src/view controllers/TSMessageAdapter.m +++ b/Signal/src/view controllers/TSMessageAdapter.m @@ -30,6 +30,7 @@ @property (nonatomic, retain) NSString *messageBody; @property NSUInteger identifier; +@property NSInteger outgoingMessageStatus; @end @@ -74,6 +75,10 @@ adapter.messageBody = @"Placeholder for ErrorMessage"; } + if ([interaction isKindOfClass:[TSOutgoingMessage class]]) { + adapter.outgoingMessageStatus = ((TSOutgoingMessage*)interaction).messageState; + } + return adapter; } @@ -109,4 +114,8 @@ return self.identifier; } +- (NSInteger)messageState{ + return self.outgoingMessageStatus; +} + @end