diff --git a/Signal/src/Loki/Group Chat/GroupChatPoller.swift b/Signal/src/Loki/Group Chat/GroupChatPoller.swift index fbaa3c136..7ed3c1623 100644 --- a/Signal/src/Loki/Group Chat/GroupChatPoller.swift +++ b/Signal/src/Loki/Group Chat/GroupChatPoller.swift @@ -101,7 +101,7 @@ public final class GroupChatPoller : NSObject { expireStartedAt: 0, isVoiceMessage: false, groupMetaMessage: .deliver, quotedMessage: signalQuote, contactShare: nil, linkPreview: nil) storage.dbReadWriteConnection.readWrite { transaction in message.update(withSentRecipient: group.server, wasSentByUD: false, transaction: transaction) - message.saveGroupChatMessageID(messageServerID, in: transaction) + message.saveGroupChatServerID(messageServerID, in: transaction) guard let messageID = message.uniqueId else { return print("[Loki] Failed to save group message.") } storage.setIDForMessageWithServerID(UInt(messageServerID), to: messageID, in: transaction) } diff --git a/Signal/src/Loki/Onboarding/SeedVC.swift b/Signal/src/Loki/Onboarding/SeedVC.swift index c518c2b1d..7b27fd214 100644 --- a/Signal/src/Loki/Onboarding/SeedVC.swift +++ b/Signal/src/Loki/Onboarding/SeedVC.swift @@ -351,9 +351,6 @@ final class SeedVC : OnboardingBaseViewController, DeviceLinkingModalDelegate { self?.sendLinkingRequestMessage(linkingRequestMessage) } sendLinkingRequestMessage(linkingRequestMessage) - - // TODO: Sending bug - } else { onboardingController.pushDisplayNameVC(from: self) } diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewItem.m b/Signal/src/ViewControllers/ConversationView/ConversationViewItem.m index 16690ac5d..425ebd015 100644 --- a/Signal/src/ViewControllers/ConversationView/ConversationViewItem.m +++ b/Signal/src/ViewControllers/ConversationView/ConversationViewItem.m @@ -1189,7 +1189,7 @@ NSString *NSStringForOWSMessageCellType(OWSMessageCellType cellType) // Delete the message BOOL isSentByUser = (interationType == OWSInteractionType_OutgoingMessage); - [[LKGroupChatAPI deleteMessageWithID:message.groupChatMessageID forGroup:LKGroupChatAPI.publicChatServerID onServer:LKGroupChatAPI.publicChatServer isSentByUser:isSentByUser].catch(^(NSError *error) { + [[LKGroupChatAPI deleteMessageWithID:message.groupChatServerID forGroup:LKGroupChatAPI.publicChatServerID onServer:LKGroupChatAPI.publicChatServer isSentByUser:isSentByUser].catch(^(NSError *error) { // Roll back [self.interaction save]; }) retainUntilComplete]; diff --git a/SignalServiceKit/src/Loki/Database/LokiDatabaseUtilities.swift b/SignalServiceKit/src/Loki/Database/LokiDatabaseUtilities.swift index cabfb3690..4c29c8128 100644 --- a/SignalServiceKit/src/Loki/Database/LokiDatabaseUtilities.swift +++ b/SignalServiceKit/src/Loki/Database/LokiDatabaseUtilities.swift @@ -17,6 +17,6 @@ public final class LokiDatabaseUtilities : NSObject { } return (senderHexEncodedPublicKey == quoteeHexEncodedPublicKey) && (interaction.uniqueThreadId == threadID) }, with: transaction).first as! TSMessage? else { return 0 } - return message.groupChatMessageID + return message.groupChatServerID } } diff --git a/SignalServiceKit/src/Loki/Messaging/LKDeviceLinkMessage.m b/SignalServiceKit/src/Loki/Messaging/LKDeviceLinkMessage.m index 0ce253593..73c671028 100644 --- a/SignalServiceKit/src/Loki/Messaging/LKDeviceLinkMessage.m +++ b/SignalServiceKit/src/Loki/Messaging/LKDeviceLinkMessage.m @@ -65,7 +65,7 @@ } #pragma mark Settings -- (uint)ttl { 8 * kMinuteInMs; } +- (uint)ttl { return 2 * kMinuteInMs; } - (BOOL)shouldSyncTranscript { return NO; } - (BOOL)shouldBeSaved { return NO; } diff --git a/SignalServiceKit/src/Loki/Messaging/LKFriendRequestMessage.m b/SignalServiceKit/src/Loki/Messaging/LKFriendRequestMessage.m index 8992ea917..100c9ec65 100644 --- a/SignalServiceKit/src/Loki/Messaging/LKFriendRequestMessage.m +++ b/SignalServiceKit/src/Loki/Messaging/LKFriendRequestMessage.m @@ -6,8 +6,6 @@ @implementation LKFriendRequestMessage -- (uint)ttl { return 4 * kDayInMs; } // Friend requests should stay for the longest on the storage server - - (SSKProtoContentBuilder *)contentBuilder:(SignalRecipient *)recipient { SSKProtoContentBuilder *contentBuilder = [super contentBuilder:recipient]; @@ -26,4 +24,8 @@ return contentBuilder; } +- (uint)ttl { + return 4 * kDayInMs; +} + @end diff --git a/SignalServiceKit/src/Messages/Interactions/TSMessage.h b/SignalServiceKit/src/Messages/Interactions/TSMessage.h index d115a4fe0..682deb47d 100644 --- a/SignalServiceKit/src/Messages/Interactions/TSMessage.h +++ b/SignalServiceKit/src/Messages/Interactions/TSMessage.h @@ -46,7 +46,7 @@ typedef NS_ENUM(NSInteger, LKMessageFriendRequestStatus) { @property (nonatomic, readonly) BOOL hasFriendRequestStatusMessage; @property (nonatomic) BOOL isP2P; // Group chat -@property (nonatomic) uint64_t groupChatMessageID; +@property (nonatomic) uint64_t groupChatServerID; @property (nonatomic, readonly) BOOL isGroupChatMessage; - (instancetype)initInteractionWithTimestamp:(uint64_t)timestamp inThread:(TSThread *)thread NS_UNAVAILABLE; @@ -96,7 +96,7 @@ typedef NS_ENUM(NSInteger, LKMessageFriendRequestStatus) { #pragma mark - Group Chat -- (void)saveGroupChatMessageID:(uint64_t)serverMessageID in:(YapDatabaseReadWriteTransaction *_Nullable)transaction; +- (void)saveGroupChatServerID:(uint64_t)serverMessageID in:(YapDatabaseReadWriteTransaction *_Nullable)transaction; #pragma mark - Link Preview diff --git a/SignalServiceKit/src/Messages/Interactions/TSMessage.m b/SignalServiceKit/src/Messages/Interactions/TSMessage.m index 984b965f1..77e24aeb7 100644 --- a/SignalServiceKit/src/Messages/Interactions/TSMessage.m +++ b/SignalServiceKit/src/Messages/Interactions/TSMessage.m @@ -82,7 +82,7 @@ static const NSUInteger OWSMessageSchemaVersion = 4; _linkPreview = linkPreview; _friendRequestStatus = LKMessageFriendRequestStatusNone; _friendRequestExpiresAt = 0; - _groupChatMessageID = -1; + _groupChatServerID = -1; return self; } @@ -498,11 +498,11 @@ static const NSUInteger OWSMessageSchemaVersion = 4; #pragma mark - Group Chat - (BOOL) isGroupChatMessage { - return self.groupChatMessageID > 0; + return self.groupChatServerID > 0; } -- (void)saveGroupChatMessageID:(uint64_t)serverMessageID in:(YapDatabaseReadWriteTransaction *_Nullable)transaction { - self.groupChatMessageID = serverMessageID; +- (void)saveGroupChatServerID:(uint64_t)serverMessageID in:(YapDatabaseReadWriteTransaction *_Nullable)transaction { + self.groupChatServerID = serverMessageID; if (transaction == nil) { [self save]; [self.dbReadWriteConnection flushTransactionsWithCompletionQueue:dispatch_get_main_queue() completionBlock:^{}]; @@ -514,7 +514,6 @@ static const NSUInteger OWSMessageSchemaVersion = 4; #pragma mark - Link Preview - - (void)generateLinkPreviewIfNeededFromURL:(NSString *)url { [OWSLinkPreview tryToBuildPreviewInfoObjcWithPreviewUrl:url] .thenOn(dispatch_get_main_queue(), ^(OWSLinkPreviewDraft *linkPreviewDraft) { diff --git a/SignalServiceKit/src/Messages/Interactions/TSOutgoingMessage.h b/SignalServiceKit/src/Messages/Interactions/TSOutgoingMessage.h index c55a67fdd..72287ad19 100644 --- a/SignalServiceKit/src/Messages/Interactions/TSOutgoingMessage.h +++ b/SignalServiceKit/src/Messages/Interactions/TSOutgoingMessage.h @@ -142,10 +142,10 @@ typedef NS_ENUM(NSInteger, TSGroupMetaMessage) { @property (nonatomic, readonly) BOOL isOnline; -/// Loki: Bool to indicate if proof of work is being calculated for this message +/// Loki: Whether proof of work is being calculated for this message. @property (atomic, readonly) BOOL isCalculatingPoW; -/// Loki: Time to live for the message in seconds +/// Loki: Time to live for the message in milliseconds. @property (nonatomic, readonly) uint ttl; /** diff --git a/SignalServiceKit/src/Messages/Interactions/TSOutgoingMessage.m b/SignalServiceKit/src/Messages/Interactions/TSOutgoingMessage.m index c6e7eee62..6620a57b9 100644 --- a/SignalServiceKit/src/Messages/Interactions/TSOutgoingMessage.m +++ b/SignalServiceKit/src/Messages/Interactions/TSOutgoingMessage.m @@ -1164,9 +1164,7 @@ NSString *NSStringForOutgoingMessageRecipientState(OWSOutgoingMessageRecipientSt } - (uint)ttl { - // Time to live for all messages (except friend request messages) should be 1 day - // TODO: Change this to return a value that the user chose - return 1 * kDayInMs; + return 1 * kDayInMs; // TODO: Change this to return a value that the user chose } @end diff --git a/SignalServiceKit/src/Messages/OWSMessageManager.m b/SignalServiceKit/src/Messages/OWSMessageManager.m index 72d60115a..af448a537 100644 --- a/SignalServiceKit/src/Messages/OWSMessageManager.m +++ b/SignalServiceKit/src/Messages/OWSMessageManager.m @@ -1393,7 +1393,7 @@ NS_ASSUME_NONNULL_BEGIN wasReceivedByUD:wasReceivedByUD]; if (envelope.isPtpMessage) { incomingMessage.isP2P = YES; } - if (dataMessage.publicChatInfo && dataMessage.publicChatInfo.hasServerID) { incomingMessage.groupChatMessageID = dataMessage.publicChatInfo.serverID; } + if (dataMessage.publicChatInfo && dataMessage.publicChatInfo.hasServerID) { incomingMessage.groupChatServerID = dataMessage.publicChatInfo.serverID; } NSArray *attachmentPointers = [TSAttachmentPointer attachmentPointersFromProtos:dataMessage.attachments diff --git a/SignalServiceKit/src/Messages/OWSMessageSender.m b/SignalServiceKit/src/Messages/OWSMessageSender.m index 0686cbe4a..03926c4b4 100644 --- a/SignalServiceKit/src/Messages/OWSMessageSender.m +++ b/SignalServiceKit/src/Messages/OWSMessageSender.m @@ -1161,7 +1161,7 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException"; [[LKGroupChatAPI sendMessage:groupMessage toGroup:LKGroupChatAPI.publicChatServerID onServer:LKGroupChatAPI.publicChatServer] .thenOn(OWSDispatch.sendingQueue, ^(LKGroupMessage *groupMessage) { [self.dbConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) { - [message saveGroupChatMessageID:groupMessage.serverID in:transaction]; + [message saveGroupChatServerID:groupMessage.serverID in:transaction]; [OWSPrimaryStorage.sharedManager setIDForMessageWithServerID:groupMessage.serverID to:message.uniqueId in:transaction]; }]; [self messageSendDidSucceed:messageSend deviceMessages:deviceMessages wasSentByUD:false wasSentByWebsocket:false];