From 750a25622b2d0fe21cd7913333ac4f325c0e9454 Mon Sep 17 00:00:00 2001 From: Niels Andriesse Date: Fri, 17 May 2019 16:36:24 +1000 Subject: [PATCH] Partially fix remaining UI issues --- Signal/Signal-Prefix.pch | 1 + .../ConversationView/ConversationViewController.m | 10 +++++++++- .../ConversationView/ConversationViewItem.m | 5 +++-- SignalServiceKit/src/Loki/Extensions/NSObject.h | 6 ++++++ SignalServiceKit/src/Loki/Extensions/NSObject.m | 10 ++++++++++ SignalServiceKit/src/TSPrefix.h | 1 + 6 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 SignalServiceKit/src/Loki/Extensions/NSObject.h create mode 100644 SignalServiceKit/src/Loki/Extensions/NSObject.m diff --git a/Signal/Signal-Prefix.pch b/Signal/Signal-Prefix.pch index 053c1f346..ae5a34d10 100644 --- a/Signal/Signal-Prefix.pch +++ b/Signal/Signal-Prefix.pch @@ -19,4 +19,5 @@ #import #import #import + #import #endif diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewController.m b/Signal/src/ViewControllers/ConversationView/ConversationViewController.m index 02f7acbf0..8dab2a244 100644 --- a/Signal/src/ViewControllers/ConversationView/ConversationViewController.m +++ b/Signal/src/ViewControllers/ConversationView/ConversationViewController.m @@ -406,7 +406,7 @@ typedef enum : NSUInteger { name:UIKeyboardDidChangeFrameNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector(resetContentAndLayout) + selector:@selector(handleThreadFriendRequestStatusChangedNotification:) name:@"threadFriendRequestStatusChanged" object:nil]; } @@ -472,6 +472,14 @@ typedef enum : NSUInteger { [self ensureBannerState]; } +- (void)handleThreadFriendRequestStatusChangedNotification:(NSNotification *)notification +{ + [self.thread reload]; + [self.viewItems.lastObject clearCachedLayoutState]; // Presumably a cell with a friend request view + [self resetContentAndLayout]; + [self updateInputToolbar]; +} + - (void)peekSetup { _peek = YES; diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewItem.m b/Signal/src/ViewControllers/ConversationView/ConversationViewItem.m index 9d307c133..318e73153 100644 --- a/Signal/src/ViewControllers/ConversationView/ConversationViewItem.m +++ b/Signal/src/ViewControllers/ConversationView/ConversationViewItem.m @@ -402,11 +402,12 @@ NSString *NSStringForOWSMessageCellType(OWSMessageCellType cellType) && previousLayoutItem.interaction.interactionType == OWSInteractionType_IncomingMessage) { TSIncomingMessage *incomingMessage = (TSIncomingMessage *)self.interaction; TSIncomingMessage *previousIncomingMessage = (TSIncomingMessage *)previousLayoutItem.interaction; - if ([incomingMessage.authorId isEqualToString:previousIncomingMessage.authorId]) { + if ([incomingMessage.authorId isEqualToString:previousIncomingMessage.authorId] && !previousIncomingMessage.isFriendRequest) { return 2.f; } } else if (self.interaction.interactionType == OWSInteractionType_OutgoingMessage - && previousLayoutItem.interaction.interactionType == OWSInteractionType_OutgoingMessage) { + && previousLayoutItem.interaction.interactionType == OWSInteractionType_OutgoingMessage + && !([previousLayoutItem.interaction isKindOfClass:TSOutgoingMessage.class] && ((TSOutgoingMessage *)previousLayoutItem.interaction).isFriendRequest)) { return 2.f; } diff --git a/SignalServiceKit/src/Loki/Extensions/NSObject.h b/SignalServiceKit/src/Loki/Extensions/NSObject.h new file mode 100644 index 000000000..a8a5bf289 --- /dev/null +++ b/SignalServiceKit/src/Loki/Extensions/NSObject.h @@ -0,0 +1,6 @@ + +@interface NSObject (Casting) + +- (instancetype)as:(Class)cls; + +@end diff --git a/SignalServiceKit/src/Loki/Extensions/NSObject.m b/SignalServiceKit/src/Loki/Extensions/NSObject.m new file mode 100644 index 000000000..0bdd83304 --- /dev/null +++ b/SignalServiceKit/src/Loki/Extensions/NSObject.m @@ -0,0 +1,10 @@ +#import "NSObject.h" + +@implementation NSObject (Casting) + +- (instancetype)as:(Class)cls { + if ([self isKindOfClass:cls]) { return self; } + return nil; +} + +@end diff --git a/SignalServiceKit/src/TSPrefix.h b/SignalServiceKit/src/TSPrefix.h index d482637cb..13e393f57 100644 --- a/SignalServiceKit/src/TSPrefix.h +++ b/SignalServiceKit/src/TSPrefix.h @@ -12,6 +12,7 @@ static const NSUInteger ddLogLevel = DDLogLevelAll; static const NSUInteger ddLogLevel = DDLogLevelInfo; #endif #import "OWSAnalytics.h" +#import "NSObject.h" #import "SSKAsserts.h" #import "TSConstants.h" #import