From b5cc66262d4e7077b066b9a88d103456bd904e4a Mon Sep 17 00:00:00 2001 From: Mikunj Date: Wed, 22 May 2019 13:00:32 +1000 Subject: [PATCH] Added ttl property on TSOutgoingMessage. Use this ttl value when sending a message. --- SignalServiceKit/src/Loki/API/LokiAPI+Message.swift | 7 ++++++- SignalServiceKit/src/Loki/API/SignalMessage.swift | 1 + .../src/Loki/Messages/LKFriendRequestMessage.m | 8 +++++++- .../src/Messages/Interactions/TSOutgoingMessage.h | 3 +++ .../src/Messages/Interactions/TSOutgoingMessage.m | 6 ++++++ SignalServiceKit/src/Messages/OWSMessageSender.m | 3 +++ SignalServiceKit/src/Messages/OWSMessageServiceParams.h | 1 + SignalServiceKit/src/Messages/OWSMessageServiceParams.m | 1 + 8 files changed, 28 insertions(+), 2 deletions(-) diff --git a/SignalServiceKit/src/Loki/API/LokiAPI+Message.swift b/SignalServiceKit/src/Loki/API/LokiAPI+Message.swift index 9d146e264..95f12f771 100644 --- a/SignalServiceKit/src/Loki/API/LokiAPI+Message.swift +++ b/SignalServiceKit/src/Loki/API/LokiAPI+Message.swift @@ -35,7 +35,12 @@ public extension LokiAPI { let wrappedMessage = try LokiMessageWrapper.wrap(message: signalMessage, timestamp: timestamp) let data = wrappedMessage.base64EncodedString() let destination = signalMessage["destination"] as! String - let ttl = LokiAPI.defaultMessageTTL + + var ttl = LokiAPI.defaultMessageTTL + if let messageTTL = signalMessage["ttl"] as? UInt, messageTTL > 0 { + ttl = UInt64(messageTTL) + } + if isPoWRequired { // The storage server takes a time interval in milliseconds let now = NSDate.ows_millisecondTimeStamp() diff --git a/SignalServiceKit/src/Loki/API/SignalMessage.swift b/SignalServiceKit/src/Loki/API/SignalMessage.swift index 11d7eec95..f543fe1df 100644 --- a/SignalServiceKit/src/Loki/API/SignalMessage.swift +++ b/SignalServiceKit/src/Loki/API/SignalMessage.swift @@ -1,2 +1,3 @@ +// This is basically OWSMessageServiceParams public typealias SignalMessage = [String:Any] diff --git a/SignalServiceKit/src/Loki/Messages/LKFriendRequestMessage.m b/SignalServiceKit/src/Loki/Messages/LKFriendRequestMessage.m index eed1204c2..3375379f4 100644 --- a/SignalServiceKit/src/Loki/Messages/LKFriendRequestMessage.m +++ b/SignalServiceKit/src/Loki/Messages/LKFriendRequestMessage.m @@ -1,11 +1,17 @@ #import "LKFriendRequestMessage.h" #import "OWSPrimaryStorage+Loki.h" +#import "NSDate+OWS.h" #import "SignalRecipient.h" #import @implementation LKFriendRequestMessage --(BOOL)isFriendRequest { return YES; } +- (BOOL)isFriendRequest { return YES; } + +- (uint)ttl { + // Friend requests should stay for the longest on the storage server + return 4 * kDayInterval; +} - (SSKProtoContentBuilder *)contentBuilder:(SignalRecipient *)recipient { SSKProtoContentBuilder *contentBuilder = [super contentBuilder:recipient]; diff --git a/SignalServiceKit/src/Messages/Interactions/TSOutgoingMessage.h b/SignalServiceKit/src/Messages/Interactions/TSOutgoingMessage.h index 93adadaba..25ca6539b 100644 --- a/SignalServiceKit/src/Messages/Interactions/TSOutgoingMessage.h +++ b/SignalServiceKit/src/Messages/Interactions/TSOutgoingMessage.h @@ -144,6 +144,9 @@ typedef NS_ENUM(NSInteger, TSGroupMetaMessage) { // Loki: Bool to indicate if proof of work is being calculated for this message @property (atomic, readonly) BOOL isCalculatingPoW; +// Loki: Time to live for the message +@property (nonatomic, readonly) uint ttl; + /** * The data representation of this message, to be encrypted, before being sent. */ diff --git a/SignalServiceKit/src/Messages/Interactions/TSOutgoingMessage.m b/SignalServiceKit/src/Messages/Interactions/TSOutgoingMessage.m index eed46d2b5..197c62fcf 100644 --- a/SignalServiceKit/src/Messages/Interactions/TSOutgoingMessage.m +++ b/SignalServiceKit/src/Messages/Interactions/TSOutgoingMessage.m @@ -1154,6 +1154,12 @@ NSString *NSStringForOutgoingMessageRecipientState(OWSOutgoingMessageRecipientSt return [result copy]; } +- (uint)ttl { + // Time to live for all messages should be 1 day + // TODO: Change this to return a value that the user chose + return 1 * kDayInterval; +} + @end NS_ASSUME_NONNULL_END diff --git a/SignalServiceKit/src/Messages/OWSMessageSender.m b/SignalServiceKit/src/Messages/OWSMessageSender.m index 736a89798..c685f66fb 100644 --- a/SignalServiceKit/src/Messages/OWSMessageSender.m +++ b/SignalServiceKit/src/Messages/OWSMessageSender.m @@ -1885,6 +1885,9 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException"; isSilent:isSilent isOnline:isOnline registrationId:[cipher throws_remoteRegistrationId:transaction]]; + + // Loki: Add the ttl to the message params + messageParams.ttl = message.ttl; NSError *error; NSDictionary *jsonDict = [MTLJSONAdapter JSONDictionaryFromModel:messageParams error:&error]; diff --git a/SignalServiceKit/src/Messages/OWSMessageServiceParams.h b/SignalServiceKit/src/Messages/OWSMessageServiceParams.h index a2e1d9d3f..55a335069 100644 --- a/SignalServiceKit/src/Messages/OWSMessageServiceParams.h +++ b/SignalServiceKit/src/Messages/OWSMessageServiceParams.h @@ -23,6 +23,7 @@ NS_ASSUME_NONNULL_BEGIN @property (nonatomic, readonly) NSString *content; @property (nonatomic, readonly) BOOL silent; @property (nonatomic, readonly) BOOL online; +@property (nonatomic) uint ttl; - (instancetype)initWithType:(TSWhisperMessageType)type recipientId:(NSString *)destination diff --git a/SignalServiceKit/src/Messages/OWSMessageServiceParams.m b/SignalServiceKit/src/Messages/OWSMessageServiceParams.m index a2a66121c..16eeb684e 100644 --- a/SignalServiceKit/src/Messages/OWSMessageServiceParams.m +++ b/SignalServiceKit/src/Messages/OWSMessageServiceParams.m @@ -36,6 +36,7 @@ NS_ASSUME_NONNULL_BEGIN _content = [content base64EncodedString]; _silent = isSilent; _online = isOnline; + _ttl = 0; return self; }