Code generate Swift wrappers for protocol buffers.

This commit is contained in:
Matthew Chen 2018-08-01 18:00:58 -04:00
parent ab31e5a07f
commit d3adb80242
16 changed files with 326 additions and 16305 deletions

View File

@ -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:]

View File

@ -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;
}

View File

@ -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];

View File

@ -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;
}

View File

@ -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;
@ -78,9 +76,16 @@ NS_ASSUME_NONNULL_BEGIN
// padded by the superclass while being sent. The end result is we send a NullMessage of a non-distinct size, and a
// 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;
}

View File

@ -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,

View File

@ -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;
}

View File

@ -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

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;

View File

@ -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

View File

@ -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
}