Fix TTL bug

pull/56/head
Niels Andriesse 6 years ago
parent b7d3c1da04
commit 7f17a9cb22

@ -101,7 +101,7 @@ public final class GroupChatPoller : NSObject {
expireStartedAt: 0, isVoiceMessage: false, groupMetaMessage: .deliver, quotedMessage: signalQuote, contactShare: nil, linkPreview: nil) expireStartedAt: 0, isVoiceMessage: false, groupMetaMessage: .deliver, quotedMessage: signalQuote, contactShare: nil, linkPreview: nil)
storage.dbReadWriteConnection.readWrite { transaction in storage.dbReadWriteConnection.readWrite { transaction in
message.update(withSentRecipient: group.server, wasSentByUD: false, transaction: transaction) 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.") } guard let messageID = message.uniqueId else { return print("[Loki] Failed to save group message.") }
storage.setIDForMessageWithServerID(UInt(messageServerID), to: messageID, in: transaction) storage.setIDForMessageWithServerID(UInt(messageServerID), to: messageID, in: transaction)
} }

@ -351,9 +351,6 @@ final class SeedVC : OnboardingBaseViewController, DeviceLinkingModalDelegate {
self?.sendLinkingRequestMessage(linkingRequestMessage) self?.sendLinkingRequestMessage(linkingRequestMessage)
} }
sendLinkingRequestMessage(linkingRequestMessage) sendLinkingRequestMessage(linkingRequestMessage)
// TODO: Sending bug
} else { } else {
onboardingController.pushDisplayNameVC(from: self) onboardingController.pushDisplayNameVC(from: self)
} }

@ -1189,7 +1189,7 @@ NSString *NSStringForOWSMessageCellType(OWSMessageCellType cellType)
// Delete the message // Delete the message
BOOL isSentByUser = (interationType == OWSInteractionType_OutgoingMessage); 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 // Roll back
[self.interaction save]; [self.interaction save];
}) retainUntilComplete]; }) retainUntilComplete];

@ -17,6 +17,6 @@ public final class LokiDatabaseUtilities : NSObject {
} }
return (senderHexEncodedPublicKey == quoteeHexEncodedPublicKey) && (interaction.uniqueThreadId == threadID) return (senderHexEncodedPublicKey == quoteeHexEncodedPublicKey) && (interaction.uniqueThreadId == threadID)
}, with: transaction).first as! TSMessage? else { return 0 } }, with: transaction).first as! TSMessage? else { return 0 }
return message.groupChatMessageID return message.groupChatServerID
} }
} }

@ -65,7 +65,7 @@
} }
#pragma mark Settings #pragma mark Settings
- (uint)ttl { 8 * kMinuteInMs; } - (uint)ttl { return 2 * kMinuteInMs; }
- (BOOL)shouldSyncTranscript { return NO; } - (BOOL)shouldSyncTranscript { return NO; }
- (BOOL)shouldBeSaved { return NO; } - (BOOL)shouldBeSaved { return NO; }

@ -6,8 +6,6 @@
@implementation LKFriendRequestMessage @implementation LKFriendRequestMessage
- (uint)ttl { return 4 * kDayInMs; } // Friend requests should stay for the longest on the storage server
- (SSKProtoContentBuilder *)contentBuilder:(SignalRecipient *)recipient { - (SSKProtoContentBuilder *)contentBuilder:(SignalRecipient *)recipient {
SSKProtoContentBuilder *contentBuilder = [super contentBuilder:recipient]; SSKProtoContentBuilder *contentBuilder = [super contentBuilder:recipient];
@ -26,4 +24,8 @@
return contentBuilder; return contentBuilder;
} }
- (uint)ttl {
return 4 * kDayInMs;
}
@end @end

@ -46,7 +46,7 @@ typedef NS_ENUM(NSInteger, LKMessageFriendRequestStatus) {
@property (nonatomic, readonly) BOOL hasFriendRequestStatusMessage; @property (nonatomic, readonly) BOOL hasFriendRequestStatusMessage;
@property (nonatomic) BOOL isP2P; @property (nonatomic) BOOL isP2P;
// Group chat // Group chat
@property (nonatomic) uint64_t groupChatMessageID; @property (nonatomic) uint64_t groupChatServerID;
@property (nonatomic, readonly) BOOL isGroupChatMessage; @property (nonatomic, readonly) BOOL isGroupChatMessage;
- (instancetype)initInteractionWithTimestamp:(uint64_t)timestamp inThread:(TSThread *)thread NS_UNAVAILABLE; - (instancetype)initInteractionWithTimestamp:(uint64_t)timestamp inThread:(TSThread *)thread NS_UNAVAILABLE;
@ -96,7 +96,7 @@ typedef NS_ENUM(NSInteger, LKMessageFriendRequestStatus) {
#pragma mark - Group Chat #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 #pragma mark - Link Preview

@ -82,7 +82,7 @@ static const NSUInteger OWSMessageSchemaVersion = 4;
_linkPreview = linkPreview; _linkPreview = linkPreview;
_friendRequestStatus = LKMessageFriendRequestStatusNone; _friendRequestStatus = LKMessageFriendRequestStatusNone;
_friendRequestExpiresAt = 0; _friendRequestExpiresAt = 0;
_groupChatMessageID = -1; _groupChatServerID = -1;
return self; return self;
} }
@ -498,11 +498,11 @@ static const NSUInteger OWSMessageSchemaVersion = 4;
#pragma mark - Group Chat #pragma mark - Group Chat
- (BOOL) isGroupChatMessage { - (BOOL) isGroupChatMessage {
return self.groupChatMessageID > 0; return self.groupChatServerID > 0;
} }
- (void)saveGroupChatMessageID:(uint64_t)serverMessageID in:(YapDatabaseReadWriteTransaction *_Nullable)transaction { - (void)saveGroupChatServerID:(uint64_t)serverMessageID in:(YapDatabaseReadWriteTransaction *_Nullable)transaction {
self.groupChatMessageID = serverMessageID; self.groupChatServerID = serverMessageID;
if (transaction == nil) { if (transaction == nil) {
[self save]; [self save];
[self.dbReadWriteConnection flushTransactionsWithCompletionQueue:dispatch_get_main_queue() completionBlock:^{}]; [self.dbReadWriteConnection flushTransactionsWithCompletionQueue:dispatch_get_main_queue() completionBlock:^{}];
@ -514,7 +514,6 @@ static const NSUInteger OWSMessageSchemaVersion = 4;
#pragma mark - Link Preview #pragma mark - Link Preview
- (void)generateLinkPreviewIfNeededFromURL:(NSString *)url { - (void)generateLinkPreviewIfNeededFromURL:(NSString *)url {
[OWSLinkPreview tryToBuildPreviewInfoObjcWithPreviewUrl:url] [OWSLinkPreview tryToBuildPreviewInfoObjcWithPreviewUrl:url]
.thenOn(dispatch_get_main_queue(), ^(OWSLinkPreviewDraft *linkPreviewDraft) { .thenOn(dispatch_get_main_queue(), ^(OWSLinkPreviewDraft *linkPreviewDraft) {

@ -142,10 +142,10 @@ typedef NS_ENUM(NSInteger, TSGroupMetaMessage) {
@property (nonatomic, readonly) BOOL isOnline; @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; @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; @property (nonatomic, readonly) uint ttl;
/** /**

@ -1164,9 +1164,7 @@ NSString *NSStringForOutgoingMessageRecipientState(OWSOutgoingMessageRecipientSt
} }
- (uint)ttl { - (uint)ttl {
// Time to live for all messages (except friend request messages) should be 1 day return 1 * kDayInMs; // TODO: Change this to return a value that the user chose
// TODO: Change this to return a value that the user chose
return 1 * kDayInMs;
} }
@end @end

@ -1393,7 +1393,7 @@ NS_ASSUME_NONNULL_BEGIN
wasReceivedByUD:wasReceivedByUD]; wasReceivedByUD:wasReceivedByUD];
if (envelope.isPtpMessage) { incomingMessage.isP2P = YES; } 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<TSAttachmentPointer *> *attachmentPointers = NSArray<TSAttachmentPointer *> *attachmentPointers =
[TSAttachmentPointer attachmentPointersFromProtos:dataMessage.attachments [TSAttachmentPointer attachmentPointersFromProtos:dataMessage.attachments

@ -1161,7 +1161,7 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException";
[[LKGroupChatAPI sendMessage:groupMessage toGroup:LKGroupChatAPI.publicChatServerID onServer:LKGroupChatAPI.publicChatServer] [[LKGroupChatAPI sendMessage:groupMessage toGroup:LKGroupChatAPI.publicChatServerID onServer:LKGroupChatAPI.publicChatServer]
.thenOn(OWSDispatch.sendingQueue, ^(LKGroupMessage *groupMessage) { .thenOn(OWSDispatch.sendingQueue, ^(LKGroupMessage *groupMessage) {
[self.dbConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) { [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]; [OWSPrimaryStorage.sharedManager setIDForMessageWithServerID:groupMessage.serverID to:message.uniqueId in:transaction];
}]; }];
[self messageSendDidSucceed:messageSend deviceMessages:deviceMessages wasSentByUD:false wasSentByWebsocket:false]; [self messageSendDidSucceed:messageSend deviceMessages:deviceMessages wasSentByUD:false wasSentByWebsocket:false];

Loading…
Cancel
Save