Code generate Swift wrappers for protocol buffers.
This commit is contained in:
parent
ab31e5a07f
commit
d3adb80242
|
@ -616,6 +616,7 @@ public func serializedData() throws -> Data {
|
|||
# Setters
|
||||
for field in self.fields():
|
||||
if field.rules == 'repeated':
|
||||
# Add
|
||||
accessor_name = field.name_swift
|
||||
accessor_name = 'add' + accessor_name[0].upper() + accessor_name[1:]
|
||||
writer.add('@objc public func %s(_ valueParam: %s) {' % ( accessor_name, self.base_swift_type_for_field(field), ))
|
||||
|
@ -633,6 +634,37 @@ public func serializedData() throws -> Data {
|
|||
writer.pop_indent()
|
||||
writer.add('}')
|
||||
writer.newline()
|
||||
|
||||
# Set
|
||||
accessor_name = field.name_swift
|
||||
accessor_name = 'set' + accessor_name[0].upper() + accessor_name[1:]
|
||||
writer.add('@objc public func %s(_ wrappedItems: [%s]) {' % ( accessor_name, self.base_swift_type_for_field(field), ))
|
||||
writer.push_indent()
|
||||
list_wrapped_swift_name = None
|
||||
if self.is_field_a_proto(field):
|
||||
message_context = self.context_for_proto_type(field)
|
||||
list_wrapped_swift_name = message_context.derive_wrapped_swift_name()
|
||||
else:
|
||||
# TODO: Assert not an enum.
|
||||
list_wrapped_swift_name = self.base_swift_type_for_field(field)
|
||||
writer.add('var unwrappedItems = [%s]()' % list_wrapped_swift_name)
|
||||
writer.add('for wrappedItem in wrappedItems {')
|
||||
writer.push_indent()
|
||||
|
||||
if self.is_field_an_enum(field):
|
||||
enum_context = self.context_for_proto_type(field)
|
||||
writer.add('unwrappedItems.append(%sUnwrap(wrappedItem))' % enum_context.swift_name )
|
||||
elif self.is_field_a_proto(field):
|
||||
writer.add('unwrappedItems.append(wrappedItem.proto)')
|
||||
else:
|
||||
writer.add('unwrappedItems.append(wrappedItem)')
|
||||
|
||||
writer.pop_indent()
|
||||
writer.add('}')
|
||||
writer.add('proto.%s = unwrappedItems' % ( field.name_swift, ) )
|
||||
writer.pop_indent()
|
||||
writer.add('}')
|
||||
writer.newline()
|
||||
else:
|
||||
accessor_name = field.name_swift
|
||||
accessor_name = 'set' + accessor_name[0].upper() + accessor_name[1:]
|
||||
|
|
|
@ -32,14 +32,19 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
return self;
|
||||
}
|
||||
|
||||
- (SSKProtoSyncMessageBuilder *)syncMessageBuilder
|
||||
- (nullable SSKProtoSyncMessageBuilder *)syncMessageBuilder
|
||||
{
|
||||
SSKProtoSyncMessageBlockedBuilder *blockedPhoneNumbersBuilder =
|
||||
[SSKProtoSyncMessageBlockedBuilder new];
|
||||
[blockedPhoneNumbersBuilder setNumbersArray:_phoneNumbers];
|
||||
SSKProtoSyncMessageBuilder *syncMessageBuilder = [SSKProtoSyncMessageBuilder new];
|
||||
[syncMessageBuilder setBlocked:[blockedPhoneNumbersBuilder build]];
|
||||
SSKProtoSyncMessageBlockedBuilder *blockedBuilder = [SSKProtoSyncMessageBlockedBuilder new];
|
||||
[blockedBuilder setNumbers:_phoneNumbers];
|
||||
NSError *error;
|
||||
SSKProtoSyncMessageBlocked *_Nullable blockedProto = [blockedBuilder buildAndReturnError:&error];
|
||||
if (error || !blockedProto) {
|
||||
OWSFail(@"%@ could not build protobuf: %@", self.logTag, error);
|
||||
return nil;
|
||||
}
|
||||
|
||||
SSKProtoSyncMessageBuilder *syncMessageBuilder = [SSKProtoSyncMessageBuilder new];
|
||||
[syncMessageBuilder setBlocked:blockedProto];
|
||||
return syncMessageBuilder;
|
||||
}
|
||||
|
||||
|
|
|
@ -43,7 +43,15 @@ disappearingMessagesConfiguration:(nullable OWSDisappearingMessagesConfiguration
|
|||
verifiedBuilder.destination = recipientIdentity.recipientId;
|
||||
verifiedBuilder.identityKey = [recipientIdentity.identityKey prependKeyType];
|
||||
verifiedBuilder.state = OWSVerificationStateToProtoState(recipientIdentity.verificationState);
|
||||
contactBuilder.verifiedBuilder = verifiedBuilder;
|
||||
|
||||
NSError *error;
|
||||
SSKProtoVerified *_Nullable verified = [verifiedBuilder buildAndReturnError:&error];
|
||||
if (error || !verified) {
|
||||
OWSFail(@"%@ could not build protobuf: %@", self.logTag, error);
|
||||
return;
|
||||
}
|
||||
|
||||
contactBuilder.verified = verified;
|
||||
}
|
||||
|
||||
UIImage *_Nullable rawAvatar = [contactsManager avatarImageForCNContactId:signalAccount.contact.cnContactId];
|
||||
|
@ -53,10 +61,16 @@ disappearingMessagesConfiguration:(nullable OWSDisappearingMessagesConfiguration
|
|||
if (avatarPng) {
|
||||
SSKProtoContactDetailsAvatarBuilder *avatarBuilder =
|
||||
[SSKProtoContactDetailsAvatarBuilder new];
|
||||
|
||||
[avatarBuilder setContentType:OWSMimeTypeImagePng];
|
||||
[avatarBuilder setLength:(uint32_t)avatarPng.length];
|
||||
[contactBuilder setAvatarBuilder:avatarBuilder];
|
||||
|
||||
NSError *error;
|
||||
SSKProtoContactDetailsAvatar *_Nullable avatar = [avatarBuilder buildAndReturnError:&error];
|
||||
if (error || !avatar) {
|
||||
OWSFail(@"%@ could not build protobuf: %@", self.logTag, error);
|
||||
return;
|
||||
}
|
||||
[contactBuilder setAvatar:avatar];
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -78,7 +92,17 @@ disappearingMessagesConfiguration:(nullable OWSDisappearingMessagesConfiguration
|
|||
[contactBuilder setBlocked:YES];
|
||||
}
|
||||
|
||||
NSData *contactData = [[contactBuilder build] data];
|
||||
NSError *error;
|
||||
SSKProtoContactDetails *_Nullable contactProto = [contactBuilder buildAndReturnError:&error];
|
||||
if (error || !contactProto) {
|
||||
OWSFail(@"%@ could not build protobuf: %@", self.logTag, error);
|
||||
return;
|
||||
}
|
||||
NSData *_Nullable contactData = [contactProto serializedDataAndReturnError:&error];
|
||||
if (error || !contactData) {
|
||||
OWSFail(@"%@ could not serialize protobuf: %@", self.logTag, error);
|
||||
return;
|
||||
}
|
||||
|
||||
uint32_t contactDataLength = (uint32_t)contactData.length;
|
||||
[self.delegateStream writeRawVarint32:contactDataLength];
|
||||
|
|
|
@ -33,7 +33,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
return [super initWithCoder:coder];
|
||||
}
|
||||
|
||||
- (SSKProtoSyncMessageBuilder *)syncMessageBuilder
|
||||
- (nullable SSKProtoSyncMessageBuilder *)syncMessageBuilder
|
||||
{
|
||||
SSKProtoSyncMessageBuilder *syncMessageBuilder = [SSKProtoSyncMessageBuilder new];
|
||||
for (OWSLinkedDeviceReadReceipt *readReceipt in self.readReceipts) {
|
||||
|
@ -41,9 +41,15 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
[SSKProtoSyncMessageReadBuilder new];
|
||||
[readProtoBuilder setSender:readReceipt.senderId];
|
||||
[readProtoBuilder setTimestamp:readReceipt.messageIdTimestamp];
|
||||
[syncMessageBuilder addRead:[readProtoBuilder build]];
|
||||
}
|
||||
|
||||
NSError *error;
|
||||
SSKProtoSyncMessageRead *_Nullable readProto = [readProtoBuilder buildAndReturnError:&error];
|
||||
if (error || !readProto) {
|
||||
OWSFail(@"%@ could not build protobuf: %@", self.logTag, error);
|
||||
return nil;
|
||||
}
|
||||
[syncMessageBuilder addRead:readProto];
|
||||
}
|
||||
return syncMessageBuilder;
|
||||
}
|
||||
|
||||
|
|
|
@ -54,7 +54,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
return [super initWithCoder:coder];
|
||||
}
|
||||
|
||||
- (SSKProtoSyncMessageBuilder *)syncMessageBuilder
|
||||
- (nullable SSKProtoSyncMessageBuilder *)syncMessageBuilder
|
||||
{
|
||||
OWSAssert(self.identityKey.length == kIdentityKeyLength);
|
||||
OWSAssert(self.verificationForRecipientId.length > 0);
|
||||
|
@ -63,8 +63,6 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
// will figure that out on it's own.
|
||||
OWSAssert(self.verificationState != OWSVerificationStateNoLongerVerified);
|
||||
|
||||
SSKProtoSyncMessageBuilder *syncMessageBuilder = [SSKProtoSyncMessageBuilder new];
|
||||
|
||||
SSKProtoVerifiedBuilder *verifiedBuilder = [SSKProtoVerifiedBuilder new];
|
||||
verifiedBuilder.destination = self.verificationForRecipientId;
|
||||
verifiedBuilder.identityKey = self.identityKey;
|
||||
|
@ -79,8 +77,15 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
// verification sync which is ~1-512 bytes larger then that.
|
||||
verifiedBuilder.nullMessage = [Cryptography generateRandomBytes:self.paddingBytesLength];
|
||||
|
||||
syncMessageBuilder.verifiedBuilder = verifiedBuilder;
|
||||
NSError *error;
|
||||
SSKProtoVerified *_Nullable verifiedProto = [verifiedBuilder buildAndReturnError:&error];
|
||||
if (error || !verifiedProto) {
|
||||
OWSFail(@"%@ could not build protobuf: %@", self.logTag, error);
|
||||
return nil;
|
||||
}
|
||||
|
||||
SSKProtoSyncMessageBuilder *syncMessageBuilder = [SSKProtoSyncMessageBuilder new];
|
||||
[syncMessageBuilder setVerified:verifiedProto];
|
||||
return syncMessageBuilder;
|
||||
}
|
||||
|
||||
|
|
|
@ -2,11 +2,12 @@
|
|||
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
|
||||
//
|
||||
|
||||
#import "SignalServiceKit-Swift.h"
|
||||
#import "TSAttachment.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@class SSKProtoAttachmentPointer;
|
||||
|
||||
typedef NS_ENUM(NSUInteger, TSAttachmentPointerState) {
|
||||
TSAttachmentPointerStateEnqueued = 0,
|
||||
TSAttachmentPointerStateDownloading = 1,
|
||||
|
|
|
@ -53,19 +53,23 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
return [super initWithCoder:coder];
|
||||
}
|
||||
|
||||
- (SSKProtoSyncMessageBuilder *)syncMessageBuilder
|
||||
- (nullable SSKProtoSyncMessageBuilder *)syncMessageBuilder
|
||||
{
|
||||
SSKProtoSyncMessageBuilder *syncMessageBuilder = [SSKProtoSyncMessageBuilder new];
|
||||
|
||||
SSKProtoSyncMessageSentBuilder *sentBuilder = [SSKProtoSyncMessageSentBuilder new];
|
||||
[sentBuilder setTimestamp:self.message.timestamp];
|
||||
|
||||
[sentBuilder setDestination:self.sentRecipientId];
|
||||
[sentBuilder setMessage:[self.message buildDataMessage:self.sentRecipientId]];
|
||||
[sentBuilder setExpirationStartTimestamp:self.message.timestamp];
|
||||
|
||||
[syncMessageBuilder setSentBuilder:sentBuilder];
|
||||
NSError *error;
|
||||
SSKProtoSyncMessageSent *_Nullable sentProto = [sentBuilder buildAndReturnError:&error];
|
||||
if (error || !sentProto) {
|
||||
OWSFail(@"%@ could not build protobuf: %@", self.logTag, error);
|
||||
return nil;
|
||||
}
|
||||
|
||||
SSKProtoSyncMessageBuilder *syncMessageBuilder = [SSKProtoSyncMessageBuilder new];
|
||||
[syncMessageBuilder setSent:sentProto];
|
||||
return syncMessageBuilder;
|
||||
}
|
||||
|
||||
|
|
|
@ -48,28 +48,57 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
}
|
||||
|
||||
// This method should not be overridden, since we want to add random padding to *every* sync message
|
||||
- (SSKProtoSyncMessage *)buildSyncMessage
|
||||
- (nullable SSKProtoSyncMessage *)buildSyncMessage
|
||||
{
|
||||
SSKProtoSyncMessageBuilder *builder = [self syncMessageBuilder];
|
||||
SSKProtoSyncMessageBuilder *_Nullable builder = [self syncMessageBuilder];
|
||||
if (!builder) {
|
||||
return nil;
|
||||
}
|
||||
|
||||
// Add a random 1-512 bytes to obscure sync message type
|
||||
size_t paddingBytesLength = arc4random_uniform(512) + 1;
|
||||
builder.padding = [Cryptography generateRandomBytes:paddingBytesLength];
|
||||
|
||||
return [builder build];
|
||||
NSError *error;
|
||||
SSKProtoSyncMessage *_Nullable proto = [builder buildAndReturnError:&error];
|
||||
if (error || !proto) {
|
||||
OWSFail(@"%@ could not build protobuf: %@", self.logTag, error);
|
||||
return nil;
|
||||
}
|
||||
return proto;
|
||||
}
|
||||
|
||||
- (SSKProtoSyncMessageBuilder *)syncMessageBuilder
|
||||
- (nullable SSKProtoSyncMessageBuilder *)syncMessageBuilder
|
||||
{
|
||||
OWSFail(@"Abstract method should be overridden in subclass.");
|
||||
OWS_ABSTRACT_METHOD();
|
||||
|
||||
return [SSKProtoSyncMessageBuilder new];
|
||||
}
|
||||
|
||||
- (nullable NSData *)buildPlainTextData:(SignalRecipient *)recipient
|
||||
{
|
||||
SSKProtoSyncMessage *_Nullable syncMessage = [self buildSyncMessage];
|
||||
if (!syncMessage) {
|
||||
return nil;
|
||||
}
|
||||
|
||||
SSKProtoContentBuilder *contentBuilder = [SSKProtoContentBuilder new];
|
||||
[contentBuilder setSyncMessage:[self buildSyncMessage]];
|
||||
return [[contentBuilder build] data];
|
||||
[contentBuilder setSyncMessage:syncMessage];
|
||||
|
||||
NSError *error;
|
||||
SSKProtoContent *_Nullable contentProto = [contentBuilder buildAndReturnError:&error];
|
||||
if (error || !contentProto) {
|
||||
OWSFail(@"%@ could not build protobuf: %@", self.logTag, error);
|
||||
return nil;
|
||||
}
|
||||
|
||||
NSData *_Nullable data = [contentProto serializedDataAndReturnError:&error];
|
||||
if (error || !data) {
|
||||
OWSFail(@"%@ could not serialize protobuf: %@", self.logTag, error);
|
||||
return nil;
|
||||
}
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
|
@ -32,17 +32,21 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
return [super initWithCoder:coder];
|
||||
}
|
||||
|
||||
- (SSKProtoSyncMessageBuilder *)syncMessageBuilder
|
||||
- (nullable SSKProtoSyncMessageBuilder *)syncMessageBuilder
|
||||
{
|
||||
|
||||
SSKProtoSyncMessageConfigurationBuilder *configurationBuilder =
|
||||
[SSKProtoSyncMessageConfigurationBuilder new];
|
||||
configurationBuilder.readReceipts = self.areReadReceiptsEnabled;
|
||||
|
||||
NSError *error;
|
||||
SSKProtoSyncMessageConfiguration *_Nullable configurationProto = [configurationBuilder buildAndReturnError:&error];
|
||||
if (error || !configurationProto) {
|
||||
OWSFail(@"%@ could not build protobuf: %@", self.logTag, error);
|
||||
return nil;
|
||||
}
|
||||
|
||||
SSKProtoSyncMessageBuilder *builder = [SSKProtoSyncMessageBuilder new];
|
||||
|
||||
builder.configurationBuilder = configurationBuilder;
|
||||
|
||||
builder.configuration = configurationProto;
|
||||
return builder;
|
||||
}
|
||||
|
||||
|
|
|
@ -49,7 +49,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
return [super initWithCoder:coder];
|
||||
}
|
||||
|
||||
- (SSKProtoSyncMessageBuilder *)syncMessageBuilder
|
||||
- (nullable SSKProtoSyncMessageBuilder *)syncMessageBuilder
|
||||
{
|
||||
if (self.attachmentIds.count != 1) {
|
||||
DDLogError(@"expected sync contact message to have exactly one attachment, but found %lu",
|
||||
|
@ -61,12 +61,16 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
|
||||
SSKProtoSyncMessageContactsBuilder *contactsBuilder =
|
||||
[SSKProtoSyncMessageContactsBuilder new];
|
||||
|
||||
[contactsBuilder setBlob:attachmentProto];
|
||||
[contactsBuilder setIsComplete:YES];
|
||||
|
||||
SSKProtoSyncMessageBuilder *syncMessageBuilder = [SSKProtoSyncMessageBuilder new];
|
||||
[syncMessageBuilder setContactsBuilder:contactsBuilder];
|
||||
NSError *error;
|
||||
SSKProtoSyncMessageContacts *_Nullable contactsProto = [contactsBuilder buildAndReturnError:&error];
|
||||
if (error || !contactsProto) {
|
||||
OWSFail(@"%@ could not build protobuf: %@", self.logTag, error);
|
||||
return nil;
|
||||
}
|
||||
[syncMessageBuilder setContacts:contactsProto];
|
||||
|
||||
return syncMessageBuilder;
|
||||
}
|
||||
|
|
|
@ -26,7 +26,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
return [super initWithCoder:coder];
|
||||
}
|
||||
|
||||
- (SSKProtoSyncMessageBuilder *)syncMessageBuilder
|
||||
- (nullable SSKProtoSyncMessageBuilder *)syncMessageBuilder
|
||||
{
|
||||
|
||||
if (self.attachmentIds.count != 1) {
|
||||
|
@ -37,11 +37,17 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
|
||||
SSKProtoSyncMessageGroupsBuilder *groupsBuilder =
|
||||
[SSKProtoSyncMessageGroupsBuilder new];
|
||||
|
||||
[groupsBuilder setBlob:attachmentProto];
|
||||
|
||||
NSError *error;
|
||||
SSKProtoSyncMessageGroups *_Nullable groupsProto = [groupsBuilder buildAndReturnError:&error];
|
||||
if (error || !groupsProto) {
|
||||
OWSFail(@"%@ could not build protobuf: %@", self.logTag, error);
|
||||
return nil;
|
||||
}
|
||||
|
||||
SSKProtoSyncMessageBuilder *syncMessageBuilder = [SSKProtoSyncMessageBuilder new];
|
||||
[syncMessageBuilder setGroupsBuilder:groupsBuilder];
|
||||
[syncMessageBuilder setGroups:groupsProto];
|
||||
|
||||
return syncMessageBuilder;
|
||||
}
|
||||
|
|
|
@ -796,7 +796,14 @@ NSString *NSStringForContactAddressType(OWSContactAddressType value)
|
|||
contactBuilder.organization = contactName.organizationName.ows_stripped;
|
||||
}
|
||||
nameBuilder.displayName = contactName.displayName;
|
||||
[contactBuilder setNameBuilder:nameBuilder];
|
||||
|
||||
NSError *error;
|
||||
SSKProtoDataMessageContactName *_Nullable nameProto = [nameBuilder buildAndReturnError:&error];
|
||||
if (error || !nameProto) {
|
||||
OWSFail(@"%@ could not build protobuf: %@", self.logTag, error);
|
||||
return nil;
|
||||
}
|
||||
[contactBuilder setName:nameProto];
|
||||
|
||||
for (OWSContactPhoneNumber *phoneNumber in contact.phoneNumbers) {
|
||||
SSKProtoDataMessageContactPhoneBuilder *phoneBuilder =
|
||||
|
@ -819,7 +826,12 @@ NSString *NSStringForContactAddressType(OWSContactAddressType value)
|
|||
phoneBuilder.type = SSKProtoDataMessageContactPhoneTypeCustom;
|
||||
break;
|
||||
}
|
||||
[contactBuilder addNumber:phoneBuilder.build];
|
||||
SSKProtoDataMessageContactPhone *_Nullable numberProto = [phoneBuilder buildAndReturnError:&error];
|
||||
if (error || !numberProto) {
|
||||
OWSFail(@"%@ could not build protobuf: %@", self.logTag, error);
|
||||
return nil;
|
||||
}
|
||||
[contactBuilder addNumber:numberProto];
|
||||
}
|
||||
|
||||
for (OWSContactEmail *email in contact.emails) {
|
||||
|
@ -843,7 +855,12 @@ NSString *NSStringForContactAddressType(OWSContactAddressType value)
|
|||
emailBuilder.type = SSKProtoDataMessageContactEmailTypeCustom;
|
||||
break;
|
||||
}
|
||||
[contactBuilder addEmail:emailBuilder.build];
|
||||
SSKProtoDataMessageContactEmail *_Nullable emailProto = [emailBuilder buildAndReturnError:&error];
|
||||
if (error || !emailProto) {
|
||||
OWSFail(@"%@ could not build protobuf: %@", self.logTag, error);
|
||||
return nil;
|
||||
}
|
||||
[contactBuilder addEmail:emailProto];
|
||||
}
|
||||
|
||||
for (OWSContactAddress *address in contact.addresses) {
|
||||
|
@ -873,7 +890,12 @@ NSString *NSStringForContactAddressType(OWSContactAddressType value)
|
|||
if (address.country.ows_stripped.length > 0) {
|
||||
addressBuilder.country = address.country.ows_stripped;
|
||||
}
|
||||
[contactBuilder addAddress:addressBuilder.build];
|
||||
SSKProtoDataMessageContactPostalAddress *_Nullable addressProto = [addressBuilder buildAndReturnError:&error];
|
||||
if (error || !addressProto) {
|
||||
OWSFail(@"%@ could not build protobuf: %@", self.logTag, error);
|
||||
return nil;
|
||||
}
|
||||
[contactBuilder addAddress:addressProto];
|
||||
}
|
||||
|
||||
if (contact.avatarAttachmentId != nil) {
|
||||
|
@ -881,10 +903,19 @@ NSString *NSStringForContactAddressType(OWSContactAddressType value)
|
|||
[SSKProtoDataMessageContactAvatarBuilder new];
|
||||
avatarBuilder.avatar =
|
||||
[TSAttachmentStream buildProtoForAttachmentId:contact.avatarAttachmentId];
|
||||
contactBuilder.avatar = [avatarBuilder build];
|
||||
SSKProtoDataMessageContactAvatar *_Nullable avatarProto = [avatarBuilder buildAndReturnError:&error];
|
||||
if (error || !avatarProto) {
|
||||
OWSFail(@"%@ could not build protobuf: %@", self.logTag, error);
|
||||
return nil;
|
||||
}
|
||||
contactBuilder.avatar = avatarProto;
|
||||
}
|
||||
|
||||
SSKProtoDataMessageContact *contactProto = [contactBuilder build];
|
||||
SSKProtoDataMessageContact *_Nullable contactProto = [contactBuilder buildAndReturnError:&error];
|
||||
if (error || !contactProto) {
|
||||
OWSFail(@"%@ could not build protobuf: %@", self.logTag, error);
|
||||
return nil;
|
||||
}
|
||||
if (contactProto.number.count < 1 && contactProto.email.count < 1 && contactProto.address.count < 1) {
|
||||
OWSProdLogAndFail(@"%@ contact has neither phone, email or address.", self.logTag);
|
||||
return nil;
|
||||
|
|
|
@ -134,14 +134,14 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
[builder setCallMessage:[self buildCallMessage:recipient.recipientId]];
|
||||
|
||||
NSError *error;
|
||||
SSKProtoCallMessage *_Nullable result = [builder buildAndReturnError:&error];
|
||||
SSKProtoContent *_Nullable result = [builder buildAndReturnError:&error];
|
||||
if (error || !result) {
|
||||
OWSFail(@"%@ could not build protobuf: %@", self.logTag, error);
|
||||
return nil;
|
||||
}
|
||||
NSData *_Nullable data = [result serializedDataAndReturnError:&error];
|
||||
if (error || !result) {
|
||||
OWSFail(@"%@ could not build protobuf: %@", self.logTag, error);
|
||||
if (error || !data) {
|
||||
OWSFail(@"%@ could not serialize protobuf: %@", self.logTag, error);
|
||||
return nil;
|
||||
}
|
||||
return data;
|
||||
|
@ -152,25 +152,45 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
SSKProtoCallMessageBuilder *builder = [SSKProtoCallMessageBuilder new];
|
||||
|
||||
if (self.offerMessage) {
|
||||
[builder setOffer:[self.offerMessage asProtobuf]];
|
||||
SSKProtoCallMessageOffer *_Nullable proto = [self.offerMessage asProtobuf];
|
||||
if (!proto) {
|
||||
return nil;
|
||||
}
|
||||
[builder setOffer:proto];
|
||||
}
|
||||
|
||||
if (self.answerMessage) {
|
||||
[builder setAnswer:[self.answerMessage asProtobuf]];
|
||||
SSKProtoCallMessageAnswer *_Nullable proto = [self.answerMessage asProtobuf];
|
||||
if (!proto) {
|
||||
return nil;
|
||||
}
|
||||
[builder setAnswer:proto];
|
||||
}
|
||||
|
||||
if (self.iceUpdateMessages) {
|
||||
for (OWSCallIceUpdateMessage *iceUpdateMessage in self.iceUpdateMessages) {
|
||||
[builder addIceUpdate:[iceUpdateMessage asProtobuf]];
|
||||
SSKProtoCallMessageIceUpdate *_Nullable proto = [iceUpdateMessage asProtobuf];
|
||||
if (!proto) {
|
||||
return nil;
|
||||
}
|
||||
[builder addIceUpdate:proto];
|
||||
}
|
||||
}
|
||||
|
||||
if (self.hangupMessage) {
|
||||
[builder setHangup:[self.hangupMessage asProtobuf]];
|
||||
SSKProtoCallMessageHangup *_Nullable proto = [self.hangupMessage asProtobuf];
|
||||
if (!proto) {
|
||||
return nil;
|
||||
}
|
||||
[builder setHangup:proto];
|
||||
}
|
||||
|
||||
if (self.busyMessage) {
|
||||
[builder setBusy:[self.busyMessage asProtobuf]];
|
||||
SSKProtoCallMessageBusy *_Nullable proto = [self.busyMessage asProtobuf];
|
||||
if (!proto) {
|
||||
return nil;
|
||||
}
|
||||
[builder setBusy:proto];
|
||||
}
|
||||
|
||||
[builder addLocalProfileKeyIfNecessary:self.thread recipientId:recipientId];
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -672,6 +672,14 @@ public enum SSKProtoError: Error {
|
|||
proto.iceUpdate = items
|
||||
}
|
||||
|
||||
@objc public func setIceUpdate(_ wrappedItems: [SSKProtoCallMessageIceUpdate]) {
|
||||
var unwrappedItems = [SignalServiceProtos_CallMessage.IceUpdate]()
|
||||
for wrappedItem in wrappedItems {
|
||||
unwrappedItems.append(wrappedItem.proto)
|
||||
}
|
||||
proto.iceUpdate = unwrappedItems
|
||||
}
|
||||
|
||||
@objc public func setHangup(_ valueParam: SSKProtoCallMessageHangup) {
|
||||
proto.hangup = valueParam.proto
|
||||
}
|
||||
|
@ -918,6 +926,14 @@ public enum SSKProtoError: Error {
|
|||
proto.attachments = items
|
||||
}
|
||||
|
||||
@objc public func setAttachments(_ wrappedItems: [SSKProtoDataMessageQuoteQuotedAttachment]) {
|
||||
var unwrappedItems = [SignalServiceProtos_DataMessage.Quote.QuotedAttachment]()
|
||||
for wrappedItem in wrappedItems {
|
||||
unwrappedItems.append(wrappedItem.proto)
|
||||
}
|
||||
proto.attachments = unwrappedItems
|
||||
}
|
||||
|
||||
@objc public func build() throws -> SSKProtoDataMessageQuote {
|
||||
let wrapper = try SSKProtoDataMessageQuote.parseProto(proto)
|
||||
return wrapper
|
||||
|
@ -1619,18 +1635,42 @@ public enum SSKProtoError: Error {
|
|||
proto.number = items
|
||||
}
|
||||
|
||||
@objc public func setNumber(_ wrappedItems: [SSKProtoDataMessageContactPhone]) {
|
||||
var unwrappedItems = [SignalServiceProtos_DataMessage.Contact.Phone]()
|
||||
for wrappedItem in wrappedItems {
|
||||
unwrappedItems.append(wrappedItem.proto)
|
||||
}
|
||||
proto.number = unwrappedItems
|
||||
}
|
||||
|
||||
@objc public func addEmail(_ valueParam: SSKProtoDataMessageContactEmail) {
|
||||
var items = proto.email
|
||||
items.append(valueParam.proto)
|
||||
proto.email = items
|
||||
}
|
||||
|
||||
@objc public func setEmail(_ wrappedItems: [SSKProtoDataMessageContactEmail]) {
|
||||
var unwrappedItems = [SignalServiceProtos_DataMessage.Contact.Email]()
|
||||
for wrappedItem in wrappedItems {
|
||||
unwrappedItems.append(wrappedItem.proto)
|
||||
}
|
||||
proto.email = unwrappedItems
|
||||
}
|
||||
|
||||
@objc public func addAddress(_ valueParam: SSKProtoDataMessageContactPostalAddress) {
|
||||
var items = proto.address
|
||||
items.append(valueParam.proto)
|
||||
proto.address = items
|
||||
}
|
||||
|
||||
@objc public func setAddress(_ wrappedItems: [SSKProtoDataMessageContactPostalAddress]) {
|
||||
var unwrappedItems = [SignalServiceProtos_DataMessage.Contact.PostalAddress]()
|
||||
for wrappedItem in wrappedItems {
|
||||
unwrappedItems.append(wrappedItem.proto)
|
||||
}
|
||||
proto.address = unwrappedItems
|
||||
}
|
||||
|
||||
@objc public func setAvatar(_ valueParam: SSKProtoDataMessageContactAvatar) {
|
||||
proto.avatar = valueParam.proto
|
||||
}
|
||||
|
@ -1776,6 +1816,14 @@ public enum SSKProtoError: Error {
|
|||
proto.attachments = items
|
||||
}
|
||||
|
||||
@objc public func setAttachments(_ wrappedItems: [SSKProtoAttachmentPointer]) {
|
||||
var unwrappedItems = [SignalServiceProtos_AttachmentPointer]()
|
||||
for wrappedItem in wrappedItems {
|
||||
unwrappedItems.append(wrappedItem.proto)
|
||||
}
|
||||
proto.attachments = unwrappedItems
|
||||
}
|
||||
|
||||
@objc public func setGroup(_ valueParam: SSKProtoGroupContext) {
|
||||
proto.group = valueParam.proto
|
||||
}
|
||||
|
@ -1806,6 +1854,14 @@ public enum SSKProtoError: Error {
|
|||
proto.contact = items
|
||||
}
|
||||
|
||||
@objc public func setContact(_ wrappedItems: [SSKProtoDataMessageContact]) {
|
||||
var unwrappedItems = [SignalServiceProtos_DataMessage.Contact]()
|
||||
for wrappedItem in wrappedItems {
|
||||
unwrappedItems.append(wrappedItem.proto)
|
||||
}
|
||||
proto.contact = unwrappedItems
|
||||
}
|
||||
|
||||
@objc public func build() throws -> SSKProtoDataMessage {
|
||||
let wrapper = try SSKProtoDataMessage.parseProto(proto)
|
||||
return wrapper
|
||||
|
@ -2019,6 +2075,14 @@ public enum SSKProtoError: Error {
|
|||
proto.timestamp = items
|
||||
}
|
||||
|
||||
@objc public func setTimestamp(_ wrappedItems: [UInt64]) {
|
||||
var unwrappedItems = [UInt64]()
|
||||
for wrappedItem in wrappedItems {
|
||||
unwrappedItems.append(wrappedItem)
|
||||
}
|
||||
proto.timestamp = unwrappedItems
|
||||
}
|
||||
|
||||
@objc public func build() throws -> SSKProtoReceiptMessage {
|
||||
let wrapper = try SSKProtoReceiptMessage.parseProto(proto)
|
||||
return wrapper
|
||||
|
@ -2425,6 +2489,14 @@ public enum SSKProtoError: Error {
|
|||
proto.numbers = items
|
||||
}
|
||||
|
||||
@objc public func setNumbers(_ wrappedItems: [String]) {
|
||||
var unwrappedItems = [String]()
|
||||
for wrappedItem in wrappedItems {
|
||||
unwrappedItems.append(wrappedItem)
|
||||
}
|
||||
proto.numbers = unwrappedItems
|
||||
}
|
||||
|
||||
@objc public func build() throws -> SSKProtoSyncMessageBlocked {
|
||||
let wrapper = try SSKProtoSyncMessageBlocked.parseProto(proto)
|
||||
return wrapper
|
||||
|
@ -2709,6 +2781,14 @@ public enum SSKProtoError: Error {
|
|||
proto.read = items
|
||||
}
|
||||
|
||||
@objc public func setRead(_ wrappedItems: [SSKProtoSyncMessageRead]) {
|
||||
var unwrappedItems = [SignalServiceProtos_SyncMessage.Read]()
|
||||
for wrappedItem in wrappedItems {
|
||||
unwrappedItems.append(wrappedItem.proto)
|
||||
}
|
||||
proto.read = unwrappedItems
|
||||
}
|
||||
|
||||
@objc public func setBlocked(_ valueParam: SSKProtoSyncMessageBlocked) {
|
||||
proto.blocked = valueParam.proto
|
||||
}
|
||||
|
@ -3091,6 +3171,14 @@ public enum SSKProtoError: Error {
|
|||
proto.members = items
|
||||
}
|
||||
|
||||
@objc public func setMembers(_ wrappedItems: [String]) {
|
||||
var unwrappedItems = [String]()
|
||||
for wrappedItem in wrappedItems {
|
||||
unwrappedItems.append(wrappedItem)
|
||||
}
|
||||
proto.members = unwrappedItems
|
||||
}
|
||||
|
||||
@objc public func setAvatar(_ valueParam: SSKProtoAttachmentPointer) {
|
||||
proto.avatar = valueParam.proto
|
||||
}
|
||||
|
@ -3481,6 +3569,14 @@ public enum SSKProtoError: Error {
|
|||
proto.members = items
|
||||
}
|
||||
|
||||
@objc public func setMembers(_ wrappedItems: [String]) {
|
||||
var unwrappedItems = [String]()
|
||||
for wrappedItem in wrappedItems {
|
||||
unwrappedItems.append(wrappedItem)
|
||||
}
|
||||
proto.members = unwrappedItems
|
||||
}
|
||||
|
||||
@objc public func setAvatar(_ valueParam: SSKProtoGroupDetailsAvatar) {
|
||||
proto.avatar = valueParam.proto
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue