Signal-iOS/SignalServiceKit/src/Messages/DeviceSyncing/OWSOutgoingSentMessageTranscript.m
2018-04-25 10:49:19 -04:00

69 lines
1.8 KiB
Objective-C

//
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
//
#import "OWSOutgoingSentMessageTranscript.h"
#import "OWSSignalServiceProtos.pb.h"
#import "TSAccountManager.h"
#import "TSOutgoingMessage.h"
#import "TSThread.h"
NS_ASSUME_NONNULL_BEGIN
@interface TSOutgoingMessage (OWSOutgoingSentMessageTranscript)
/**
* Normally this is private, but we need to embed this
* data structure within our own.
*
* recipientId is nil when building "sent" sync messages for messages
* sent to groups.
*/
- (OWSSignalServiceProtosDataMessage *)buildDataMessage:(NSString *_Nullable)recipientId;
@end
@interface OWSOutgoingSentMessageTranscript ()
@property (nonatomic, readonly) TSOutgoingMessage *message;
@end
@implementation OWSOutgoingSentMessageTranscript
- (instancetype)initWithOutgoingMessage:(TSOutgoingMessage *)message
{
self = [super init];
if (!self) {
return self;
}
_message = message;
return self;
}
- (OWSSignalServiceProtosSyncMessageBuilder *)syncMessageBuilder
{
OWSSignalServiceProtosSyncMessageBuilder *syncMessageBuilder = [OWSSignalServiceProtosSyncMessageBuilder new];
OWSSignalServiceProtosSyncMessageSentBuilder *sentBuilder = [OWSSignalServiceProtosSyncMessageSentBuilder new];
[sentBuilder setTimestamp:self.message.timestamp];
NSString *_Nullable localNumber = [TSAccountManager localNumber];
OWSAssert(localNumber.length > 0);
OWSAssert([localNumber isEqualToString:self.message.thread.contactIdentifier]);
[sentBuilder setDestination:localNumber];
[sentBuilder setMessage:[self.message buildDataMessage:localNumber]];
[sentBuilder setExpirationStartTimestamp:self.message.timestamp];
[syncMessageBuilder setSentBuilder:sentBuilder];
return syncMessageBuilder;
}
@end
NS_ASSUME_NONNULL_END