From dc95d328cbf2fa67d36f080c419cc2b9f207df3f Mon Sep 17 00:00:00 2001 From: Michael Kirk Date: Fri, 7 Oct 2016 21:34:39 -0400 Subject: [PATCH] Don't expire messages until they are sent. // FREEBIE --- Podfile.lock | 2 +- Signal/Signal-Info.plist | 2 +- Signal/src/Models/OWSCall.m | 6 ++++-- Signal/src/Models/TSMessageAdapaters/OWSMessageData.h | 3 ++- Signal/src/Models/TSMessageAdapaters/TSMessageAdapter.m | 8 +++++--- Signal/src/view controllers/MessagesViewController.m | 6 +----- 6 files changed, 14 insertions(+), 13 deletions(-) diff --git a/Podfile.lock b/Podfile.lock index 74ec3dd82..5cdbd1773 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -135,7 +135,7 @@ EXTERNAL SOURCES: CHECKOUT OPTIONS: SignalServiceKit: - :commit: 5ebffa3406425e56ce3d7c39f4857a88de77bd8e + :commit: c274e3aa30ed07c5166f1bd3bec7097bafab8dc4 :git: https://github.com/WhisperSystems/SignalServiceKit.git SocketRocket: :commit: 41b57bb2fc292a814f758441a05243eb38457027 diff --git a/Signal/Signal-Info.plist b/Signal/Signal-Info.plist index 2f5c3fc7f..fe375b578 100644 --- a/Signal/Signal-Info.plist +++ b/Signal/Signal-Info.plist @@ -38,7 +38,7 @@ CFBundleVersion - 2.6.0.10 + 2.6.0.11 ITSAppUsesNonExemptEncryption LOGS_EMAIL diff --git a/Signal/src/Models/OWSCall.m b/Signal/src/Models/OWSCall.m index 922bf034a..94ba2e0ef 100644 --- a/Signal/src/Models/OWSCall.m +++ b/Signal/src/Models/OWSCall.m @@ -9,7 +9,8 @@ // -- Redeclaring properties from OWSMessageData protocol to synthesize variables @property (nonatomic) TSMessageAdapterType messageType; -@property (nonatomic, getter=isExpiringMessage) BOOL expiringMessage; +@property (nonatomic) BOOL isExpiringMessage; +@property (nonatomic) BOOL shouldStartExpireTimer; @property (nonatomic) uint64_t expiresAtSeconds; @property (nonatomic) uint32_t expiresInSeconds; @@ -47,7 +48,8 @@ _senderDisplayName = [senderDisplayName copy]; _date = [date copy]; _status = status; - _expiringMessage = NO; // TODO - call notifications should expire too. + _isExpiringMessage = NO; // TODO - call notifications should expire too. + _shouldStartExpireTimer = NO; // TODO - call notifications should expire too. _messageType = TSCallAdapter; // TODO interpret detailString from status. make sure it works for calls and diff --git a/Signal/src/Models/TSMessageAdapaters/OWSMessageData.h b/Signal/src/Models/TSMessageAdapaters/OWSMessageData.h index 99189ec93..21b132d64 100644 --- a/Signal/src/Models/TSMessageAdapaters/OWSMessageData.h +++ b/Signal/src/Models/TSMessageAdapaters/OWSMessageData.h @@ -19,7 +19,8 @@ typedef NS_ENUM(NSInteger, TSMessageAdapterType) { @protocol OWSMessageData @property (nonatomic, readonly) TSMessageAdapterType messageType; -@property (nonatomic, readonly, getter=isExpiringMessage) BOOL expiringMessage; +@property (nonatomic, readonly) BOOL isExpiringMessage; +@property (nonatomic, readonly) BOOL shouldStartExpireTimer; @property (nonatomic, readonly) uint64_t expiresAtSeconds; @property (nonatomic, readonly) uint32_t expiresInSeconds; diff --git a/Signal/src/Models/TSMessageAdapaters/TSMessageAdapter.m b/Signal/src/Models/TSMessageAdapaters/TSMessageAdapter.m index e2abc1c0a..9c5ead1cd 100644 --- a/Signal/src/Models/TSMessageAdapaters/TSMessageAdapter.m +++ b/Signal/src/Models/TSMessageAdapaters/TSMessageAdapter.m @@ -50,7 +50,8 @@ // -- Redeclaring properties from OWSMessageData protocol to synthesize variables @property (nonatomic) TSMessageAdapterType messageType; -@property (nonatomic, getter=isExpiringMessage) BOOL expiringMessage; +@property (nonatomic) BOOL isExpiringMessage; +@property (nonatomic) BOOL shouldStartExpireTimer; @property (nonatomic) uint64_t expiresAtSeconds; @property (nonatomic) uint32_t expiresInSeconds; @@ -79,11 +80,12 @@ if ([interaction isKindOfClass:[TSMessage class]]) { TSMessage *message = (TSMessage *)interaction; - _expiringMessage = message.isExpiringMessage; + _isExpiringMessage = message.isExpiringMessage; _expiresAtSeconds = message.expiresAt / 1000; _expiresInSeconds = message.expiresInSeconds; + _shouldStartExpireTimer = message.shouldStartExpireTimer; } else { - _expiringMessage = NO; + _isExpiringMessage = NO; } return self; diff --git a/Signal/src/view controllers/MessagesViewController.m b/Signal/src/view controllers/MessagesViewController.m index 5e3f45150..568162c25 100644 --- a/Signal/src/view controllers/MessagesViewController.m +++ b/Signal/src/view controllers/MessagesViewController.m @@ -738,7 +738,7 @@ typedef enum : NSUInteger { } cell.delegate = collectionView; - if (message.isExpiringMessage && [cell conformsToProtocol:@protocol(OWSExpirableMessageView)]) { + if (message.shouldStartExpireTimer && [cell conformsToProtocol:@protocol(OWSExpirableMessageView)]) { id expirableView = (id)cell; [expirableView startExpirationTimerWithExpiresAtSeconds:message.expiresAtSeconds initialDurationSeconds:message.expiresInSeconds]; @@ -1864,9 +1864,6 @@ typedef enum : NSUInteger { return messageAdapter; } -#pragma mark group action view - - #pragma mark - Audio - (void)recordAudio { @@ -1963,7 +1960,6 @@ typedef enum : NSUInteger { canPerformAction:(SEL)action forItemAtIndexPath:(NSIndexPath *)indexPath withSender:(id)sender { - TSMessageAdapter *messageAdapter = [self messageAtIndexPath:indexPath]; // HACK make sure method exists before calling since messageAtIndexPath doesn't // always return TSMessageAdapters - it can also return JSQCall!