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

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

@ -85,13 +85,13 @@ typedef void (^BuildOutgoingMessageCompletionBlock)(TSOutgoingMessage *savedMess
#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.messageSenderJobQueue addMessage:message transaction:transaction];
[self.messageSenderJobQueue addMessage:emptyMessage transaction:transaction];
}];
return message;
return emptyMessage;
}
+ (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)
@interface OWSEphemeralMessage : TSOutgoingMessage
/// Used to establish sessions.
+ (OWSEphemeralMessage *)createEmptyOutgoingMessageInThread:(TSThread *)thread;
@end
NS_ASSUME_NONNULL_END

@ -1,7 +1,13 @@
#import "OWSEphemeralMessage.h"
#import <SignalCoreKit/NSDate+OWS.h>
@implementation OWSEphemeralMessage
- (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

@ -19,6 +19,7 @@
#import "OWSDisappearingConfigurationUpdateInfoMessage.h"
#import "OWSDisappearingMessagesConfiguration.h"
#import "OWSDisappearingMessagesJob.h"
#import "OWSEphemeralMessage.h"
#import "OWSIdentityManager.h"
#import "OWSIncomingMessageFinder.h"
#import "OWSIncomingSentMessageTranscript.h"
@ -1022,7 +1023,7 @@ NS_ASSUME_NONNULL_BEGIN
[thread saveWithTransaction:transaction];
/// 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];
OWSLogDebug(@"[Loki Session Reset] Session reset has been received from %@", envelope.source);
@ -1476,8 +1477,8 @@ NS_ASSUME_NONNULL_BEGIN
// TSThreadFriendRequestStatusRequestSent.
[thread setFriendRequestStatus:TSThreadFriendRequestStatusFriends withTransaction:transaction];
// The two lines below are equivalent to calling [ThreadUtil enqueueAcceptFriendRequestMessageInThread:thread]
TSOutgoingMessage *acceptFriendRequestMessage = [TSOutgoingMessage createEmptyOutgoingMessageInThread:thread];
[self.messageSenderJobQueue addMessage:acceptFriendRequestMessage transaction:transaction];
OWSEphemeralMessage *emptyMessage = [OWSEphemeralMessage createEmptyOutgoingMessageInThread:thread];
[self.messageSenderJobQueue addMessage:emptyMessage transaction:transaction];
} else if (!thread.isContactFriend) {
// 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
@ -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 (thread.sessionResetState == TSContactThreadSessionResetStateInitiated) {
TSOutgoingMessage *emptyMessage = [TSOutgoingMessage createEmptyOutgoingMessageInThread:thread];
OWSEphemeralMessage *emptyMessage = [OWSEphemeralMessage createEmptyOutgoingMessageInThread:thread];
[self.messageSenderJobQueue addMessage:emptyMessage transaction:transaction];
}

Loading…
Cancel
Save