pull/16/head
Niels Andriesse 6 years ago
parent 01e80f4569
commit 64f92d261b

@ -90,6 +90,7 @@
#import <SignalServiceKit/OWSContactsOutputStream.h> #import <SignalServiceKit/OWSContactsOutputStream.h>
#import <SignalServiceKit/OWSDispatch.h> #import <SignalServiceKit/OWSDispatch.h>
#import <SignalServiceKit/OWSEndSessionMessage.h> #import <SignalServiceKit/OWSEndSessionMessage.h>
#import <SignalServiceKit/OWSEphemeralMessage.h>
#import <SignalServiceKit/OWSError.h> #import <SignalServiceKit/OWSError.h>
#import <SignalServiceKit/OWSFileSystem.h> #import <SignalServiceKit/OWSFileSystem.h>
#import <SignalServiceKit/OWSFriendRequestMessage.h> #import <SignalServiceKit/OWSFriendRequestMessage.h>

@ -85,13 +85,13 @@ typedef void (^BuildOutgoingMessageCompletionBlock)(TSOutgoingMessage *savedMess
#pragma mark - Durable Message Enqueue #pragma mark - Durable Message Enqueue
+ (TSOutgoingMessage *)enqueueAcceptFriendRequestMessageInThread:(TSThread *)thread + (OWSEphemeralMessage *)enqueueAcceptFriendRequestMessageInThread:(TSThread *)thread
{ {
TSOutgoingMessage *message = [TSOutgoingMessage createEmptyOutgoingMessageInThread:thread]; OWSEphemeralMessage *emptyMessage = [OWSEphemeralMessage createEmptyOutgoingMessageInThread:thread];
[self.dbConnection asyncReadWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) { [self.dbConnection asyncReadWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
[self.messageSenderJobQueue addMessage:message transaction:transaction]; [self.messageSenderJobQueue addMessage:emptyMessage transaction:transaction];
}]; }];
return message; return emptyMessage;
} }
+ (TSOutgoingMessage *)enqueueMessageWithText:(NSString *)fullMessageText + (TSOutgoingMessage *)enqueueMessageWithText:(NSString *)fullMessageText

@ -1,9 +0,0 @@
@objc public extension TSOutgoingMessage {
/// Loki: This is a message used to establish sessions
@objc public static func createEmptyOutgoingMessage(inThread thread: TSThread) -> EphemeralMessage {
return EphemeralMessage(outgoingMessageWithTimestamp: NSDate.ows_millisecondTimeStamp(), in: thread, messageBody: "", attachmentIds: [], expiresInSeconds: 0,
expireStartedAt: 0, isVoiceMessage: false, groupMetaMessage: .unspecified, quotedMessage: nil, contactShare: nil, linkPreview: nil)
}
}

@ -5,6 +5,9 @@ NS_ASSUME_NONNULL_BEGIN
NS_SWIFT_NAME(EphemeralMessage) NS_SWIFT_NAME(EphemeralMessage)
@interface OWSEphemeralMessage : TSOutgoingMessage @interface OWSEphemeralMessage : TSOutgoingMessage
/// Used to establish sessions.
+ (OWSEphemeralMessage *)createEmptyOutgoingMessageInThread:(TSThread *)thread;
@end @end
NS_ASSUME_NONNULL_END NS_ASSUME_NONNULL_END

@ -1,7 +1,13 @@
#import "OWSEphemeralMessage.h" #import "OWSEphemeralMessage.h"
#import <SignalCoreKit/NSDate+OWS.h>
@implementation OWSEphemeralMessage @implementation OWSEphemeralMessage
- (BOOL)shouldBeSaved { return NO; } - (BOOL)shouldBeSaved { return NO; }
+ (OWSEphemeralMessage *)createEmptyOutgoingMessageInThread:(TSThread *)thread {
return [[OWSEphemeralMessage alloc] initOutgoingMessageWithTimestamp:NSDate.ows_millisecondTimeStamp inThread:thread messageBody:@"" attachmentIds:[NSMutableArray<NSString *> new]
expiresInSeconds:0 expireStartedAt:0 isVoiceMessage:NO groupMetaMessage:TSGroupMetaMessageUnspecified quotedMessage:nil contactShare:nil linkPreview:nil];
}
@end @end

@ -19,6 +19,7 @@
#import "OWSDisappearingConfigurationUpdateInfoMessage.h" #import "OWSDisappearingConfigurationUpdateInfoMessage.h"
#import "OWSDisappearingMessagesConfiguration.h" #import "OWSDisappearingMessagesConfiguration.h"
#import "OWSDisappearingMessagesJob.h" #import "OWSDisappearingMessagesJob.h"
#import "OWSEphemeralMessage.h"
#import "OWSIdentityManager.h" #import "OWSIdentityManager.h"
#import "OWSIncomingMessageFinder.h" #import "OWSIncomingMessageFinder.h"
#import "OWSIncomingSentMessageTranscript.h" #import "OWSIncomingSentMessageTranscript.h"
@ -1022,7 +1023,7 @@ NS_ASSUME_NONNULL_BEGIN
[thread saveWithTransaction:transaction]; [thread saveWithTransaction:transaction];
/// Loki: Send an empty message to trigger the session reset code for both parties /// Loki: Send an empty message to trigger the session reset code for both parties
TSOutgoingMessage *emptyMessage = [TSOutgoingMessage createEmptyOutgoingMessageInThread:thread]; OWSEphemeralMessage *emptyMessage = [OWSEphemeralMessage createEmptyOutgoingMessageInThread:thread];
[self.messageSenderJobQueue addMessage:emptyMessage transaction:transaction]; [self.messageSenderJobQueue addMessage:emptyMessage transaction:transaction];
OWSLogDebug(@"[Loki Session Reset] Session reset has been received from %@", envelope.source); OWSLogDebug(@"[Loki Session Reset] Session reset has been received from %@", envelope.source);
@ -1476,8 +1477,8 @@ NS_ASSUME_NONNULL_BEGIN
// TSThreadFriendRequestStatusRequestSent. // TSThreadFriendRequestStatusRequestSent.
[thread setFriendRequestStatus:TSThreadFriendRequestStatusFriends withTransaction:transaction]; [thread setFriendRequestStatus:TSThreadFriendRequestStatusFriends withTransaction:transaction];
// The two lines below are equivalent to calling [ThreadUtil enqueueAcceptFriendRequestMessageInThread:thread] // The two lines below are equivalent to calling [ThreadUtil enqueueAcceptFriendRequestMessageInThread:thread]
TSOutgoingMessage *acceptFriendRequestMessage = [TSOutgoingMessage createEmptyOutgoingMessageInThread:thread]; OWSEphemeralMessage *emptyMessage = [OWSEphemeralMessage createEmptyOutgoingMessageInThread:thread];
[self.messageSenderJobQueue addMessage:acceptFriendRequestMessage transaction:transaction]; [self.messageSenderJobQueue addMessage:emptyMessage transaction:transaction];
} else if (!thread.isContactFriend) { } else if (!thread.isContactFriend) {
// Checking that the sender of the message isn't already a friend is necessary because otherwise // Checking that the sender of the message isn't already a friend is necessary because otherwise
// the following situation can occur: Alice and Bob are friends. Bob loses his database and his // the following situation can occur: Alice and Bob are friends. Bob loses his database and his
@ -1701,7 +1702,7 @@ NS_ASSUME_NONNULL_BEGIN
// If we were the ones to initiate the reset then we need to send back an empty message // If we were the ones to initiate the reset then we need to send back an empty message
if (thread.sessionResetState == TSContactThreadSessionResetStateInitiated) { if (thread.sessionResetState == TSContactThreadSessionResetStateInitiated) {
TSOutgoingMessage *emptyMessage = [TSOutgoingMessage createEmptyOutgoingMessageInThread:thread]; OWSEphemeralMessage *emptyMessage = [OWSEphemeralMessage createEmptyOutgoingMessageInThread:thread];
[self.messageSenderJobQueue addMessage:emptyMessage transaction:transaction]; [self.messageSenderJobQueue addMessage:emptyMessage transaction:transaction];
} }

Loading…
Cancel
Save