You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
session-ios/SignalServiceKit/src/Messages/DeviceSyncing/OWSIncomingSentMessageTrans...

67 lines
2.2 KiB
Objective-C

//
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
//
#import "OWSIncomingSentMessageTranscript.h"
#import "OWSContactShare.h"
#import "OWSMessageManager.h"
#import "OWSPrimaryStorage.h"
#import "OWSSignalServiceProtos.pb.h"
#import "TSContactThread.h"
#import "TSGroupModel.h"
#import "TSGroupThread.h"
#import "TSOutgoingMessage.h"
#import "TSQuotedMessage.h"
#import "TSThread.h"
NS_ASSUME_NONNULL_BEGIN
@implementation OWSIncomingSentMessageTranscript
- (instancetype)initWithProto:(OWSSignalServiceProtosSyncMessageSent *)sentProto
relay:(nullable NSString *)relay
transaction:(YapDatabaseReadWriteTransaction *)transaction
{
self = [super init];
if (!self) {
return self;
}
_relay = relay;
_dataMessage = sentProto.message;
_recipientId = sentProto.destination;
_timestamp = sentProto.timestamp;
_expirationStartedAt = sentProto.expirationStartTimestamp;
_expirationDuration = sentProto.message.expireTimer;
_body = _dataMessage.body;
_groupId = _dataMessage.group.id;
_isGroupUpdate = _dataMessage.hasGroup && (_dataMessage.group.type == OWSSignalServiceProtosGroupContextTypeUpdate);
_isExpirationTimerUpdate = (_dataMessage.flags & OWSSignalServiceProtosDataMessageFlagsExpirationTimerUpdate) != 0;
_isEndSessionMessage = (_dataMessage.flags & OWSSignalServiceProtosDataMessageFlagsEndSession) != 0;
if (self.dataMessage.hasGroup) {
_thread = [TSGroupThread getOrCreateThreadWithGroupId:_dataMessage.group.id transaction:transaction];
} else {
_thread = [TSContactThread getOrCreateThreadWithContactId:_recipientId transaction:transaction];
}
_quotedMessage =
[TSQuotedMessage quotedMessageForDataMessage:_dataMessage thread:_thread relay:relay transaction:transaction];
_contactShare = [OWSContactShare contactShareMessageForDataMessage:_dataMessage transaction:transaction];
return self;
}
- (NSArray<OWSSignalServiceProtosAttachmentPointer *> *)attachmentPointerProtos
{
if (self.isGroupUpdate && self.dataMessage.group.hasAvatar) {
return @[ self.dataMessage.group.avatar ];
} else {
return self.dataMessage.attachments;
}
}
@end
NS_ASSUME_NONNULL_END