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)
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)
}

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

@ -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];

@ -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
}
}

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

@ -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

@ -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

@ -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) {

@ -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;
/**

@ -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

@ -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<TSAttachmentPointer *> *attachmentPointers =
[TSAttachmentPointer attachmentPointersFromProtos:dataMessage.attachments

@ -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];

Loading…
Cancel
Save