Fix/Simplify outgoing attachment proto building

// FREEBIE
pull/1/head
Michael Kirk 7 years ago
parent 73102a9963
commit d3cda951ef

@ -82,11 +82,9 @@ NS_ASSUME_NONNULL_BEGIN
#pragma mark - Protobuf #pragma mark - Protobuf
+ (nullable OWSSignalServiceProtosAttachmentPointer *)buildProtoForAttachmentId:(nullable NSString *)filename + (nullable OWSSignalServiceProtosAttachmentPointer *)buildProtoForAttachmentId:(nullable NSString *)attachmentId;
isVoiceMessage:(BOOL)isVoiceMessage;
- (OWSSignalServiceProtosAttachmentPointer *)buildProtoWithFilename:(nullable NSString *)filename - (OWSSignalServiceProtosAttachmentPointer *)buildProto;
isVoiceMessage:(BOOL)isVoiceMessage;
@end @end

@ -706,7 +706,6 @@ NS_ASSUME_NONNULL_BEGIN
// MARK: Protobuf serialization // MARK: Protobuf serialization
+ (nullable OWSSignalServiceProtosAttachmentPointer *)buildProtoForAttachmentId:(nullable NSString *)attachmentId + (nullable OWSSignalServiceProtosAttachmentPointer *)buildProtoForAttachmentId:(nullable NSString *)attachmentId
isVoiceMessage:(BOOL)isVoiceMessage
{ {
OWSAssert(attachmentId.length > 0); OWSAssert(attachmentId.length > 0);
@ -720,28 +719,11 @@ NS_ASSUME_NONNULL_BEGIN
} }
TSAttachmentStream *attachmentStream = (TSAttachmentStream *)attachment; TSAttachmentStream *attachmentStream = (TSAttachmentStream *)attachment;
return [attachmentStream buildProtoWithFilename:attachmentStream.sourceFilename isVoiceMessage:isVoiceMessage]; return [attachmentStream buildProto];
} }
// MJK can we get rid of the filename / isVoiceMessage pararms?
// They seem to live (redundantly) on attachmentStream...
+ (nullable OWSSignalServiceProtosAttachmentPointer *)buildProtoForAttachmentId:(NSString *)attachmentId
filename:(nullable NSString *)filename
isVoiceMessage:(BOOL)isVoiceMessage
{
OWSAssert(attachmentId.length > 0);
TSAttachment *attachment = [TSAttachmentStream fetchObjectWithUniqueID:attachmentId];
if (![attachment isKindOfClass:[TSAttachmentStream class]]) {
DDLogError(@"Unexpected type for attachment builder: %@", attachment);
return nil;
}
TSAttachmentStream *attachmentStream = (TSAttachmentStream *)attachment;
return [attachmentStream buildProtoWithFilename:filename isVoiceMessage:isVoiceMessage];
}
- (OWSSignalServiceProtosAttachmentPointer *)buildProtoWithFilename:(nullable NSString *)filename - (OWSSignalServiceProtosAttachmentPointer *)buildProto
isVoiceMessage:(BOOL)isVoiceMessage
{ {
OWSSignalServiceProtosAttachmentPointerBuilder *builder = [OWSSignalServiceProtosAttachmentPointerBuilder new]; OWSSignalServiceProtosAttachmentPointerBuilder *builder = [OWSSignalServiceProtosAttachmentPointerBuilder new];
@ -750,13 +732,13 @@ NS_ASSUME_NONNULL_BEGIN
OWSAssert(self.contentType.length > 0); OWSAssert(self.contentType.length > 0);
builder.contentType = self.contentType; builder.contentType = self.contentType;
DDLogVerbose(@"%@ Sending attachment with filename: '%@'", self.logTag, filename); DDLogVerbose(@"%@ Sending attachment with filename: '%@'", self.logTag, self.sourceFilename);
builder.fileName = filename; builder.fileName = self.sourceFilename;
builder.size = self.byteCount; builder.size = self.byteCount;
builder.key = self.encryptionKey; builder.key = self.encryptionKey;
builder.digest = self.digest; builder.digest = self.digest;
builder.flags = isVoiceMessage ? OWSSignalServiceProtosAttachmentPointerFlagsVoiceMessage : 0; builder.flags = self.isVoiceMessage ? OWSSignalServiceProtosAttachmentPointerFlagsVoiceMessage : 0;
if (self.shouldHaveImageSize) { if (self.shouldHaveImageSize) {
CGSize imageSize = self.imageSize; CGSize imageSize = self.imageSize;

@ -59,7 +59,7 @@ NS_ASSUME_NONNULL_BEGIN
} }
OWSSignalServiceProtosAttachmentPointer *attachmentProto = OWSSignalServiceProtosAttachmentPointer *attachmentProto =
[self buildProtoForAttachmentId:self.attachmentIds[0] filename:nil]; [TSAttachmentStream buildProtoForAttachmentId:self.attachmentIds.firstObject];
OWSSignalServiceProtosSyncMessageContactsBuilder *contactsBuilder = OWSSignalServiceProtosSyncMessageContactsBuilder *contactsBuilder =
[OWSSignalServiceProtosSyncMessageContactsBuilder new]; [OWSSignalServiceProtosSyncMessageContactsBuilder new];

@ -7,6 +7,7 @@
#import "OWSGroupsOutputStream.h" #import "OWSGroupsOutputStream.h"
#import "OWSSignalServiceProtos.pb.h" #import "OWSSignalServiceProtos.pb.h"
#import "TSAttachment.h" #import "TSAttachment.h"
#import "TSAttachmentStream.h"
#import "TSGroupModel.h" #import "TSGroupModel.h"
#import "TSGroupThread.h" #import "TSGroupThread.h"
@ -35,8 +36,7 @@ NS_ASSUME_NONNULL_BEGIN
DDLogError(@"expected sync groups message to have exactly one attachment, but found %lu", DDLogError(@"expected sync groups message to have exactly one attachment, but found %lu",
(unsigned long)self.attachmentIds.count); (unsigned long)self.attachmentIds.count);
} }
OWSSignalServiceProtosAttachmentPointer *attachmentProto = OWSSignalServiceProtosAttachmentPointer *attachmentProto = [TSAttachmentStream buildProtoForAttachmentId:self.attachmentIds.firstObject];
[self buildProtoForAttachmentId:self.attachmentIds[0] filename:nil];
OWSSignalServiceProtosSyncMessageGroupsBuilder *groupsBuilder = OWSSignalServiceProtosSyncMessageGroupsBuilder *groupsBuilder =
[OWSSignalServiceProtosSyncMessageGroupsBuilder new]; [OWSSignalServiceProtosSyncMessageGroupsBuilder new];

@ -860,7 +860,7 @@ NSString *NSStringForContactAddressType(OWSContactAddressType value)
OWSSignalServiceProtosDataMessageContactAvatarBuilder *avatarBuilder = OWSSignalServiceProtosDataMessageContactAvatarBuilder *avatarBuilder =
[OWSSignalServiceProtosDataMessageContactAvatarBuilder new]; [OWSSignalServiceProtosDataMessageContactAvatarBuilder new];
avatarBuilder.avatar = avatarBuilder.avatar =
[TSAttachmentStream buildProtoForAttachmentId:contact.avatarAttachmentId isVoiceMessage:NO]; [TSAttachmentStream buildProtoForAttachmentId:contact.avatarAttachmentId];
contactBuilder.avatar = [avatarBuilder build]; contactBuilder.avatar = [avatarBuilder build];
} }

@ -143,19 +143,6 @@ typedef NS_ENUM(NSInteger, TSGroupMetaMessage) {
*/ */
- (BOOL)shouldSyncTranscript; - (BOOL)shouldSyncTranscript;
/**
* @param attachmentId
* id of an AttachmentStream containing the meta data used when populating the attachment proto
*
* @param filename
* optional filename of the attachment.
*
* @return
* An attachment pointer protobuf suitable for including in various container protobuf builders
*/
- (OWSSignalServiceProtosAttachmentPointer *)buildProtoForAttachmentId:(NSString *)attachmentId
filename:(nullable NSString *)filename;
- (BOOL)shouldBeSaved; - (BOOL)shouldBeSaved;
// All recipients of this message. // All recipients of this message.

@ -761,7 +761,7 @@ NSString *NSStringForOutgoingMessageRecipientState(OWSOutgoingMessageRecipientSt
case TSGroupMessageNew: { case TSGroupMessageNew: {
if (gThread.groupModel.groupImage != nil && self.attachmentIds.count == 1) { if (gThread.groupModel.groupImage != nil && self.attachmentIds.count == 1) {
attachmentWasGroupAvatar = YES; attachmentWasGroupAvatar = YES;
[groupBuilder setAvatar:[self buildProtoForAttachmentId:self.attachmentIds[0] filename:nil]]; [groupBuilder setAvatar:[TSAttachmentStream buildProtoForAttachmentId:self.attachmentIds.firstObject]];
} }
[groupBuilder setMembersArray:gThread.groupModel.groupMemberIds]; [groupBuilder setMembersArray:gThread.groupModel.groupMemberIds];
@ -781,8 +781,7 @@ NSString *NSStringForOutgoingMessageRecipientState(OWSOutgoingMessageRecipientSt
if (!attachmentWasGroupAvatar) { if (!attachmentWasGroupAvatar) {
NSMutableArray *attachments = [NSMutableArray new]; NSMutableArray *attachments = [NSMutableArray new];
for (NSString *attachmentId in self.attachmentIds) { for (NSString *attachmentId in self.attachmentIds) {
NSString *_Nullable sourceFilename = self.attachmentFilenameMap[attachmentId]; [attachments addObject:[TSAttachmentStream buildProtoForAttachmentId:attachmentId]];
[attachments addObject:[self buildProtoForAttachmentId:attachmentId filename:sourceFilename]];
} }
[builder setAttachmentsArray:attachments]; [builder setAttachmentsArray:attachments];
} }
@ -836,8 +835,7 @@ NSString *NSStringForOutgoingMessageRecipientState(OWSOutgoingMessageRecipientSt
quotedAttachmentBuilder.fileName = attachment.sourceFilename; quotedAttachmentBuilder.fileName = attachment.sourceFilename;
if (attachment.thumbnailAttachmentStreamId) { if (attachment.thumbnailAttachmentStreamId) {
quotedAttachmentBuilder.thumbnail = quotedAttachmentBuilder.thumbnail =
[TSAttachmentStream buildProtoForAttachmentId:attachment.thumbnailAttachmentStreamId [TSAttachmentStream buildProtoForAttachmentId:attachment.thumbnailAttachmentStreamId];
isVoiceMessage:NO];
} }
[quoteBuilder addAttachments:[quotedAttachmentBuilder build]]; [quoteBuilder addAttachments:[quotedAttachmentBuilder build]];

Loading…
Cancel
Save