diff --git a/SessionMessagingKit/Messages/Control Messages/ClosedGroupControlMessage.swift b/SessionMessagingKit/Messages/Control Messages/ClosedGroupControlMessage.swift index 52057d996..66e7cfa5a 100644 --- a/SessionMessagingKit/Messages/Control Messages/ClosedGroupControlMessage.swift +++ b/SessionMessagingKit/Messages/Control Messages/ClosedGroupControlMessage.swift @@ -15,8 +15,6 @@ public final class ClosedGroupControlMessage : ControlMessage { // MARK: Kind public enum Kind : CustomStringConvertible { case new(publicKey: Data, name: String, encryptionKeyPair: ECKeyPair, members: [Data], admins: [Data]) - /// - Note: Deprecated in favor of more explicit group updates. - case update(name: String, members: [Data]) /// An encryption key pair encrypted for each member individually. /// /// - Note: `publicKey` is only set when an encryption key pair is sent in a one-to-one context (i.e. not in a group). @@ -30,7 +28,6 @@ public final class ClosedGroupControlMessage : ControlMessage { public var description: String { switch self { case .new: return "new" - case .update: return "update" case .encryptionKeyPair: return "encryptionKeyPair" case .nameChange: return "nameChange" case .membersAdded: return "membersAdded" @@ -95,8 +92,6 @@ public final class ClosedGroupControlMessage : ControlMessage { case .new(let publicKey, let name, let encryptionKeyPair, let members, let admins): return !publicKey.isEmpty && !name.isEmpty && !encryptionKeyPair.publicKey.isEmpty && !encryptionKeyPair.privateKey.isEmpty && !members.isEmpty && !admins.isEmpty - case .update(let name, _): - return !name.isEmpty case .encryptionKeyPair: return true case .nameChange(let name): return !name.isEmpty case .membersAdded(let members): return !members.isEmpty @@ -118,10 +113,6 @@ public final class ClosedGroupControlMessage : ControlMessage { let members = coder.decodeObject(forKey: "members") as? [Data], let admins = coder.decodeObject(forKey: "admins") as? [Data] else { return nil } self.kind = .new(publicKey: publicKey, name: name, encryptionKeyPair: encryptionKeyPair, members: members, admins: admins) - case "update": - guard let name = coder.decodeObject(forKey: "name") as? String, - let members = coder.decodeObject(forKey: "members") as? [Data] else { return nil } - self.kind = .update(name: name, members: members) case "encryptionKeyPair": let publicKey = coder.decodeObject(forKey: "publicKey") as? Data guard let wrappers = coder.decodeObject(forKey: "wrappers") as? [KeyPairWrapper] else { return nil } @@ -154,10 +145,6 @@ public final class ClosedGroupControlMessage : ControlMessage { coder.encode(encryptionKeyPair, forKey: "encryptionKeyPair") coder.encode(members, forKey: "members") coder.encode(admins, forKey: "admins") - case .update(let name, let members): - coder.encode("update", forKey: "kind") - coder.encode(name, forKey: "name") - coder.encode(members, forKey: "members") case .encryptionKeyPair(let publicKey, let wrappers): coder.encode("encryptionKeyPair", forKey: "kind") coder.encode(publicKey, forKey: "publicKey") @@ -194,9 +181,6 @@ public final class ClosedGroupControlMessage : ControlMessage { SNLog("Couldn't parse key pair.") return nil } - case .update: - guard let name = closedGroupControlMessageProto.name else { return nil } - kind = .update(name: name, members: closedGroupControlMessageProto.members) case .encryptionKeyPair: let publicKey = closedGroupControlMessageProto.publicKey let wrappers = closedGroupControlMessageProto.wrappers.compactMap { KeyPairWrapper.fromProto($0) } @@ -237,10 +221,6 @@ public final class ClosedGroupControlMessage : ControlMessage { } closedGroupControlMessage.setMembers(members) closedGroupControlMessage.setAdmins(admins) - case .update(let name, let members): - closedGroupControlMessage = SNProtoDataMessageClosedGroupControlMessage.builder(type: .update) - closedGroupControlMessage.setName(name) - closedGroupControlMessage.setMembers(members) case .encryptionKeyPair(let publicKey, let wrappers): closedGroupControlMessage = SNProtoDataMessageClosedGroupControlMessage.builder(type: .encryptionKeyPair) if let publicKey = publicKey { diff --git a/SessionMessagingKit/Protos/Generated/SNProto.swift b/SessionMessagingKit/Protos/Generated/SNProto.swift index d8ee914a0..9379774a5 100644 --- a/SessionMessagingKit/Protos/Generated/SNProto.swift +++ b/SessionMessagingKit/Protos/Generated/SNProto.swift @@ -17,21 +17,21 @@ public enum SNProtoError: Error { // MARK: - SNProtoEnvelopeType @objc public enum SNProtoEnvelopeType: Int32 { - case unidentifiedSender = 6 - case closedGroupCiphertext = 7 + case sessionMessage = 6 + case closedGroupMessage = 7 } private class func SNProtoEnvelopeTypeWrap(_ value: SessionProtos_Envelope.TypeEnum) -> SNProtoEnvelopeType { switch value { - case .unidentifiedSender: return .unidentifiedSender - case .closedGroupCiphertext: return .closedGroupCiphertext + case .sessionMessage: return .sessionMessage + case .closedGroupMessage: return .closedGroupMessage } } private class func SNProtoEnvelopeTypeUnwrap(_ value: SNProtoEnvelopeType) -> SessionProtos_Envelope.TypeEnum { switch value { - case .unidentifiedSender: return .unidentifiedSender - case .closedGroupCiphertext: return .closedGroupCiphertext + case .sessionMessage: return .sessionMessage + case .closedGroupMessage: return .closedGroupMessage } } @@ -483,118 +483,6 @@ extension SNProtoContent.SNProtoContentBuilder { #endif -// MARK: - SNProtoClosedGroupCiphertextMessageWrapper - -@objc public class SNProtoClosedGroupCiphertextMessageWrapper: NSObject { - - // MARK: - SNProtoClosedGroupCiphertextMessageWrapperBuilder - - @objc public class func builder(ciphertext: Data, ephemeralPublicKey: Data) -> SNProtoClosedGroupCiphertextMessageWrapperBuilder { - return SNProtoClosedGroupCiphertextMessageWrapperBuilder(ciphertext: ciphertext, ephemeralPublicKey: ephemeralPublicKey) - } - - // asBuilder() constructs a builder that reflects the proto's contents. - @objc public func asBuilder() -> SNProtoClosedGroupCiphertextMessageWrapperBuilder { - let builder = SNProtoClosedGroupCiphertextMessageWrapperBuilder(ciphertext: ciphertext, ephemeralPublicKey: ephemeralPublicKey) - return builder - } - - @objc public class SNProtoClosedGroupCiphertextMessageWrapperBuilder: NSObject { - - private var proto = SessionProtos_ClosedGroupCiphertextMessageWrapper() - - @objc fileprivate override init() {} - - @objc fileprivate init(ciphertext: Data, ephemeralPublicKey: Data) { - super.init() - - setCiphertext(ciphertext) - setEphemeralPublicKey(ephemeralPublicKey) - } - - @objc public func setCiphertext(_ valueParam: Data) { - proto.ciphertext = valueParam - } - - @objc public func setEphemeralPublicKey(_ valueParam: Data) { - proto.ephemeralPublicKey = valueParam - } - - @objc public func build() throws -> SNProtoClosedGroupCiphertextMessageWrapper { - return try SNProtoClosedGroupCiphertextMessageWrapper.parseProto(proto) - } - - @objc public func buildSerializedData() throws -> Data { - return try SNProtoClosedGroupCiphertextMessageWrapper.parseProto(proto).serializedData() - } - } - - fileprivate let proto: SessionProtos_ClosedGroupCiphertextMessageWrapper - - @objc public let ciphertext: Data - - @objc public let ephemeralPublicKey: Data - - private init(proto: SessionProtos_ClosedGroupCiphertextMessageWrapper, - ciphertext: Data, - ephemeralPublicKey: Data) { - self.proto = proto - self.ciphertext = ciphertext - self.ephemeralPublicKey = ephemeralPublicKey - } - - @objc - public func serializedData() throws -> Data { - return try self.proto.serializedData() - } - - @objc public class func parseData(_ serializedData: Data) throws -> SNProtoClosedGroupCiphertextMessageWrapper { - let proto = try SessionProtos_ClosedGroupCiphertextMessageWrapper(serializedData: serializedData) - return try parseProto(proto) - } - - fileprivate class func parseProto(_ proto: SessionProtos_ClosedGroupCiphertextMessageWrapper) throws -> SNProtoClosedGroupCiphertextMessageWrapper { - guard proto.hasCiphertext else { - throw SNProtoError.invalidProtobuf(description: "\(logTag) missing required field: ciphertext") - } - let ciphertext = proto.ciphertext - - guard proto.hasEphemeralPublicKey else { - throw SNProtoError.invalidProtobuf(description: "\(logTag) missing required field: ephemeralPublicKey") - } - let ephemeralPublicKey = proto.ephemeralPublicKey - - // MARK: - Begin Validation Logic for SNProtoClosedGroupCiphertextMessageWrapper - - - // MARK: - End Validation Logic for SNProtoClosedGroupCiphertextMessageWrapper - - - let result = SNProtoClosedGroupCiphertextMessageWrapper(proto: proto, - ciphertext: ciphertext, - ephemeralPublicKey: ephemeralPublicKey) - return result - } - - @objc public override var debugDescription: String { - return "\(proto)" - } -} - -#if DEBUG - -extension SNProtoClosedGroupCiphertextMessageWrapper { - @objc public func serializedDataIgnoringErrors() -> Data? { - return try! self.serializedData() - } -} - -extension SNProtoClosedGroupCiphertextMessageWrapper.SNProtoClosedGroupCiphertextMessageWrapperBuilder { - @objc public func buildIgnoringErrors() -> SNProtoClosedGroupCiphertextMessageWrapper? { - return try! self.build() - } -} - -#endif - // MARK: - SNProtoKeyPair @objc public class SNProtoKeyPair: NSObject { @@ -956,1026 +844,7 @@ extension SNProtoDataMessageQuoteQuotedAttachment.SNProtoDataMessageQuoteQuotedA self.proto = proto self.id = id self.author = author - self.attachments = attachments - } - - @objc - public func serializedData() throws -> Data { - return try self.proto.serializedData() - } - - @objc public class func parseData(_ serializedData: Data) throws -> SNProtoDataMessageQuote { - let proto = try SessionProtos_DataMessage.Quote(serializedData: serializedData) - return try parseProto(proto) - } - - fileprivate class func parseProto(_ proto: SessionProtos_DataMessage.Quote) throws -> SNProtoDataMessageQuote { - guard proto.hasID else { - throw SNProtoError.invalidProtobuf(description: "\(logTag) missing required field: id") - } - let id = proto.id - - guard proto.hasAuthor else { - throw SNProtoError.invalidProtobuf(description: "\(logTag) missing required field: author") - } - let author = proto.author - - var attachments: [SNProtoDataMessageQuoteQuotedAttachment] = [] - attachments = try proto.attachments.map { try SNProtoDataMessageQuoteQuotedAttachment.parseProto($0) } - - // MARK: - Begin Validation Logic for SNProtoDataMessageQuote - - - // MARK: - End Validation Logic for SNProtoDataMessageQuote - - - let result = SNProtoDataMessageQuote(proto: proto, - id: id, - author: author, - attachments: attachments) - return result - } - - @objc public override var debugDescription: String { - return "\(proto)" - } -} - -#if DEBUG - -extension SNProtoDataMessageQuote { - @objc public func serializedDataIgnoringErrors() -> Data? { - return try! self.serializedData() - } -} - -extension SNProtoDataMessageQuote.SNProtoDataMessageQuoteBuilder { - @objc public func buildIgnoringErrors() -> SNProtoDataMessageQuote? { - return try! self.build() - } -} - -#endif - -// MARK: - SNProtoDataMessageContactName - -@objc public class SNProtoDataMessageContactName: NSObject { - - // MARK: - SNProtoDataMessageContactNameBuilder - - @objc public class func builder() -> SNProtoDataMessageContactNameBuilder { - return SNProtoDataMessageContactNameBuilder() - } - - // asBuilder() constructs a builder that reflects the proto's contents. - @objc public func asBuilder() -> SNProtoDataMessageContactNameBuilder { - let builder = SNProtoDataMessageContactNameBuilder() - if let _value = givenName { - builder.setGivenName(_value) - } - if let _value = familyName { - builder.setFamilyName(_value) - } - if let _value = prefix { - builder.setPrefix(_value) - } - if let _value = suffix { - builder.setSuffix(_value) - } - if let _value = middleName { - builder.setMiddleName(_value) - } - if let _value = displayName { - builder.setDisplayName(_value) - } - return builder - } - - @objc public class SNProtoDataMessageContactNameBuilder: NSObject { - - private var proto = SessionProtos_DataMessage.Contact.Name() - - @objc fileprivate override init() {} - - @objc public func setGivenName(_ valueParam: String) { - proto.givenName = valueParam - } - - @objc public func setFamilyName(_ valueParam: String) { - proto.familyName = valueParam - } - - @objc public func setPrefix(_ valueParam: String) { - proto.prefix = valueParam - } - - @objc public func setSuffix(_ valueParam: String) { - proto.suffix = valueParam - } - - @objc public func setMiddleName(_ valueParam: String) { - proto.middleName = valueParam - } - - @objc public func setDisplayName(_ valueParam: String) { - proto.displayName = valueParam - } - - @objc public func build() throws -> SNProtoDataMessageContactName { - return try SNProtoDataMessageContactName.parseProto(proto) - } - - @objc public func buildSerializedData() throws -> Data { - return try SNProtoDataMessageContactName.parseProto(proto).serializedData() - } - } - - fileprivate let proto: SessionProtos_DataMessage.Contact.Name - - @objc public var givenName: String? { - guard proto.hasGivenName else { - return nil - } - return proto.givenName - } - @objc public var hasGivenName: Bool { - return proto.hasGivenName - } - - @objc public var familyName: String? { - guard proto.hasFamilyName else { - return nil - } - return proto.familyName - } - @objc public var hasFamilyName: Bool { - return proto.hasFamilyName - } - - @objc public var prefix: String? { - guard proto.hasPrefix else { - return nil - } - return proto.prefix - } - @objc public var hasPrefix: Bool { - return proto.hasPrefix - } - - @objc public var suffix: String? { - guard proto.hasSuffix else { - return nil - } - return proto.suffix - } - @objc public var hasSuffix: Bool { - return proto.hasSuffix - } - - @objc public var middleName: String? { - guard proto.hasMiddleName else { - return nil - } - return proto.middleName - } - @objc public var hasMiddleName: Bool { - return proto.hasMiddleName - } - - @objc public var displayName: String? { - guard proto.hasDisplayName else { - return nil - } - return proto.displayName - } - @objc public var hasDisplayName: Bool { - return proto.hasDisplayName - } - - private init(proto: SessionProtos_DataMessage.Contact.Name) { - self.proto = proto - } - - @objc - public func serializedData() throws -> Data { - return try self.proto.serializedData() - } - - @objc public class func parseData(_ serializedData: Data) throws -> SNProtoDataMessageContactName { - let proto = try SessionProtos_DataMessage.Contact.Name(serializedData: serializedData) - return try parseProto(proto) - } - - fileprivate class func parseProto(_ proto: SessionProtos_DataMessage.Contact.Name) throws -> SNProtoDataMessageContactName { - // MARK: - Begin Validation Logic for SNProtoDataMessageContactName - - - // MARK: - End Validation Logic for SNProtoDataMessageContactName - - - let result = SNProtoDataMessageContactName(proto: proto) - return result - } - - @objc public override var debugDescription: String { - return "\(proto)" - } -} - -#if DEBUG - -extension SNProtoDataMessageContactName { - @objc public func serializedDataIgnoringErrors() -> Data? { - return try! self.serializedData() - } -} - -extension SNProtoDataMessageContactName.SNProtoDataMessageContactNameBuilder { - @objc public func buildIgnoringErrors() -> SNProtoDataMessageContactName? { - return try! self.build() - } -} - -#endif - -// MARK: - SNProtoDataMessageContactPhone - -@objc public class SNProtoDataMessageContactPhone: NSObject { - - // MARK: - SNProtoDataMessageContactPhoneType - - @objc public enum SNProtoDataMessageContactPhoneType: Int32 { - case home = 1 - case mobile = 2 - case work = 3 - case custom = 4 - } - - private class func SNProtoDataMessageContactPhoneTypeWrap(_ value: SessionProtos_DataMessage.Contact.Phone.TypeEnum) -> SNProtoDataMessageContactPhoneType { - switch value { - case .home: return .home - case .mobile: return .mobile - case .work: return .work - case .custom: return .custom - } - } - - private class func SNProtoDataMessageContactPhoneTypeUnwrap(_ value: SNProtoDataMessageContactPhoneType) -> SessionProtos_DataMessage.Contact.Phone.TypeEnum { - switch value { - case .home: return .home - case .mobile: return .mobile - case .work: return .work - case .custom: return .custom - } - } - - // MARK: - SNProtoDataMessageContactPhoneBuilder - - @objc public class func builder() -> SNProtoDataMessageContactPhoneBuilder { - return SNProtoDataMessageContactPhoneBuilder() - } - - // asBuilder() constructs a builder that reflects the proto's contents. - @objc public func asBuilder() -> SNProtoDataMessageContactPhoneBuilder { - let builder = SNProtoDataMessageContactPhoneBuilder() - if let _value = value { - builder.setValue(_value) - } - if hasType { - builder.setType(type) - } - if let _value = label { - builder.setLabel(_value) - } - return builder - } - - @objc public class SNProtoDataMessageContactPhoneBuilder: NSObject { - - private var proto = SessionProtos_DataMessage.Contact.Phone() - - @objc fileprivate override init() {} - - @objc public func setValue(_ valueParam: String) { - proto.value = valueParam - } - - @objc public func setType(_ valueParam: SNProtoDataMessageContactPhoneType) { - proto.type = SNProtoDataMessageContactPhoneTypeUnwrap(valueParam) - } - - @objc public func setLabel(_ valueParam: String) { - proto.label = valueParam - } - - @objc public func build() throws -> SNProtoDataMessageContactPhone { - return try SNProtoDataMessageContactPhone.parseProto(proto) - } - - @objc public func buildSerializedData() throws -> Data { - return try SNProtoDataMessageContactPhone.parseProto(proto).serializedData() - } - } - - fileprivate let proto: SessionProtos_DataMessage.Contact.Phone - - @objc public var value: String? { - guard proto.hasValue else { - return nil - } - return proto.value - } - @objc public var hasValue: Bool { - return proto.hasValue - } - - @objc public var type: SNProtoDataMessageContactPhoneType { - return SNProtoDataMessageContactPhone.SNProtoDataMessageContactPhoneTypeWrap(proto.type) - } - @objc public var hasType: Bool { - return proto.hasType - } - - @objc public var label: String? { - guard proto.hasLabel else { - return nil - } - return proto.label - } - @objc public var hasLabel: Bool { - return proto.hasLabel - } - - private init(proto: SessionProtos_DataMessage.Contact.Phone) { - self.proto = proto - } - - @objc - public func serializedData() throws -> Data { - return try self.proto.serializedData() - } - - @objc public class func parseData(_ serializedData: Data) throws -> SNProtoDataMessageContactPhone { - let proto = try SessionProtos_DataMessage.Contact.Phone(serializedData: serializedData) - return try parseProto(proto) - } - - fileprivate class func parseProto(_ proto: SessionProtos_DataMessage.Contact.Phone) throws -> SNProtoDataMessageContactPhone { - // MARK: - Begin Validation Logic for SNProtoDataMessageContactPhone - - - // MARK: - End Validation Logic for SNProtoDataMessageContactPhone - - - let result = SNProtoDataMessageContactPhone(proto: proto) - return result - } - - @objc public override var debugDescription: String { - return "\(proto)" - } -} - -#if DEBUG - -extension SNProtoDataMessageContactPhone { - @objc public func serializedDataIgnoringErrors() -> Data? { - return try! self.serializedData() - } -} - -extension SNProtoDataMessageContactPhone.SNProtoDataMessageContactPhoneBuilder { - @objc public func buildIgnoringErrors() -> SNProtoDataMessageContactPhone? { - return try! self.build() - } -} - -#endif - -// MARK: - SNProtoDataMessageContactEmail - -@objc public class SNProtoDataMessageContactEmail: NSObject { - - // MARK: - SNProtoDataMessageContactEmailType - - @objc public enum SNProtoDataMessageContactEmailType: Int32 { - case home = 1 - case mobile = 2 - case work = 3 - case custom = 4 - } - - private class func SNProtoDataMessageContactEmailTypeWrap(_ value: SessionProtos_DataMessage.Contact.Email.TypeEnum) -> SNProtoDataMessageContactEmailType { - switch value { - case .home: return .home - case .mobile: return .mobile - case .work: return .work - case .custom: return .custom - } - } - - private class func SNProtoDataMessageContactEmailTypeUnwrap(_ value: SNProtoDataMessageContactEmailType) -> SessionProtos_DataMessage.Contact.Email.TypeEnum { - switch value { - case .home: return .home - case .mobile: return .mobile - case .work: return .work - case .custom: return .custom - } - } - - // MARK: - SNProtoDataMessageContactEmailBuilder - - @objc public class func builder() -> SNProtoDataMessageContactEmailBuilder { - return SNProtoDataMessageContactEmailBuilder() - } - - // asBuilder() constructs a builder that reflects the proto's contents. - @objc public func asBuilder() -> SNProtoDataMessageContactEmailBuilder { - let builder = SNProtoDataMessageContactEmailBuilder() - if let _value = value { - builder.setValue(_value) - } - if hasType { - builder.setType(type) - } - if let _value = label { - builder.setLabel(_value) - } - return builder - } - - @objc public class SNProtoDataMessageContactEmailBuilder: NSObject { - - private var proto = SessionProtos_DataMessage.Contact.Email() - - @objc fileprivate override init() {} - - @objc public func setValue(_ valueParam: String) { - proto.value = valueParam - } - - @objc public func setType(_ valueParam: SNProtoDataMessageContactEmailType) { - proto.type = SNProtoDataMessageContactEmailTypeUnwrap(valueParam) - } - - @objc public func setLabel(_ valueParam: String) { - proto.label = valueParam - } - - @objc public func build() throws -> SNProtoDataMessageContactEmail { - return try SNProtoDataMessageContactEmail.parseProto(proto) - } - - @objc public func buildSerializedData() throws -> Data { - return try SNProtoDataMessageContactEmail.parseProto(proto).serializedData() - } - } - - fileprivate let proto: SessionProtos_DataMessage.Contact.Email - - @objc public var value: String? { - guard proto.hasValue else { - return nil - } - return proto.value - } - @objc public var hasValue: Bool { - return proto.hasValue - } - - @objc public var type: SNProtoDataMessageContactEmailType { - return SNProtoDataMessageContactEmail.SNProtoDataMessageContactEmailTypeWrap(proto.type) - } - @objc public var hasType: Bool { - return proto.hasType - } - - @objc public var label: String? { - guard proto.hasLabel else { - return nil - } - return proto.label - } - @objc public var hasLabel: Bool { - return proto.hasLabel - } - - private init(proto: SessionProtos_DataMessage.Contact.Email) { - self.proto = proto - } - - @objc - public func serializedData() throws -> Data { - return try self.proto.serializedData() - } - - @objc public class func parseData(_ serializedData: Data) throws -> SNProtoDataMessageContactEmail { - let proto = try SessionProtos_DataMessage.Contact.Email(serializedData: serializedData) - return try parseProto(proto) - } - - fileprivate class func parseProto(_ proto: SessionProtos_DataMessage.Contact.Email) throws -> SNProtoDataMessageContactEmail { - // MARK: - Begin Validation Logic for SNProtoDataMessageContactEmail - - - // MARK: - End Validation Logic for SNProtoDataMessageContactEmail - - - let result = SNProtoDataMessageContactEmail(proto: proto) - return result - } - - @objc public override var debugDescription: String { - return "\(proto)" - } -} - -#if DEBUG - -extension SNProtoDataMessageContactEmail { - @objc public func serializedDataIgnoringErrors() -> Data? { - return try! self.serializedData() - } -} - -extension SNProtoDataMessageContactEmail.SNProtoDataMessageContactEmailBuilder { - @objc public func buildIgnoringErrors() -> SNProtoDataMessageContactEmail? { - return try! self.build() - } -} - -#endif - -// MARK: - SNProtoDataMessageContactPostalAddress - -@objc public class SNProtoDataMessageContactPostalAddress: NSObject { - - // MARK: - SNProtoDataMessageContactPostalAddressType - - @objc public enum SNProtoDataMessageContactPostalAddressType: Int32 { - case home = 1 - case work = 2 - case custom = 3 - } - - private class func SNProtoDataMessageContactPostalAddressTypeWrap(_ value: SessionProtos_DataMessage.Contact.PostalAddress.TypeEnum) -> SNProtoDataMessageContactPostalAddressType { - switch value { - case .home: return .home - case .work: return .work - case .custom: return .custom - } - } - - private class func SNProtoDataMessageContactPostalAddressTypeUnwrap(_ value: SNProtoDataMessageContactPostalAddressType) -> SessionProtos_DataMessage.Contact.PostalAddress.TypeEnum { - switch value { - case .home: return .home - case .work: return .work - case .custom: return .custom - } - } - - // MARK: - SNProtoDataMessageContactPostalAddressBuilder - - @objc public class func builder() -> SNProtoDataMessageContactPostalAddressBuilder { - return SNProtoDataMessageContactPostalAddressBuilder() - } - - // asBuilder() constructs a builder that reflects the proto's contents. - @objc public func asBuilder() -> SNProtoDataMessageContactPostalAddressBuilder { - let builder = SNProtoDataMessageContactPostalAddressBuilder() - if hasType { - builder.setType(type) - } - if let _value = label { - builder.setLabel(_value) - } - if let _value = street { - builder.setStreet(_value) - } - if let _value = pobox { - builder.setPobox(_value) - } - if let _value = neighborhood { - builder.setNeighborhood(_value) - } - if let _value = city { - builder.setCity(_value) - } - if let _value = region { - builder.setRegion(_value) - } - if let _value = postcode { - builder.setPostcode(_value) - } - if let _value = country { - builder.setCountry(_value) - } - return builder - } - - @objc public class SNProtoDataMessageContactPostalAddressBuilder: NSObject { - - private var proto = SessionProtos_DataMessage.Contact.PostalAddress() - - @objc fileprivate override init() {} - - @objc public func setType(_ valueParam: SNProtoDataMessageContactPostalAddressType) { - proto.type = SNProtoDataMessageContactPostalAddressTypeUnwrap(valueParam) - } - - @objc public func setLabel(_ valueParam: String) { - proto.label = valueParam - } - - @objc public func setStreet(_ valueParam: String) { - proto.street = valueParam - } - - @objc public func setPobox(_ valueParam: String) { - proto.pobox = valueParam - } - - @objc public func setNeighborhood(_ valueParam: String) { - proto.neighborhood = valueParam - } - - @objc public func setCity(_ valueParam: String) { - proto.city = valueParam - } - - @objc public func setRegion(_ valueParam: String) { - proto.region = valueParam - } - - @objc public func setPostcode(_ valueParam: String) { - proto.postcode = valueParam - } - - @objc public func setCountry(_ valueParam: String) { - proto.country = valueParam - } - - @objc public func build() throws -> SNProtoDataMessageContactPostalAddress { - return try SNProtoDataMessageContactPostalAddress.parseProto(proto) - } - - @objc public func buildSerializedData() throws -> Data { - return try SNProtoDataMessageContactPostalAddress.parseProto(proto).serializedData() - } - } - - fileprivate let proto: SessionProtos_DataMessage.Contact.PostalAddress - - @objc public var type: SNProtoDataMessageContactPostalAddressType { - return SNProtoDataMessageContactPostalAddress.SNProtoDataMessageContactPostalAddressTypeWrap(proto.type) - } - @objc public var hasType: Bool { - return proto.hasType - } - - @objc public var label: String? { - guard proto.hasLabel else { - return nil - } - return proto.label - } - @objc public var hasLabel: Bool { - return proto.hasLabel - } - - @objc public var street: String? { - guard proto.hasStreet else { - return nil - } - return proto.street - } - @objc public var hasStreet: Bool { - return proto.hasStreet - } - - @objc public var pobox: String? { - guard proto.hasPobox else { - return nil - } - return proto.pobox - } - @objc public var hasPobox: Bool { - return proto.hasPobox - } - - @objc public var neighborhood: String? { - guard proto.hasNeighborhood else { - return nil - } - return proto.neighborhood - } - @objc public var hasNeighborhood: Bool { - return proto.hasNeighborhood - } - - @objc public var city: String? { - guard proto.hasCity else { - return nil - } - return proto.city - } - @objc public var hasCity: Bool { - return proto.hasCity - } - - @objc public var region: String? { - guard proto.hasRegion else { - return nil - } - return proto.region - } - @objc public var hasRegion: Bool { - return proto.hasRegion - } - - @objc public var postcode: String? { - guard proto.hasPostcode else { - return nil - } - return proto.postcode - } - @objc public var hasPostcode: Bool { - return proto.hasPostcode - } - - @objc public var country: String? { - guard proto.hasCountry else { - return nil - } - return proto.country - } - @objc public var hasCountry: Bool { - return proto.hasCountry - } - - private init(proto: SessionProtos_DataMessage.Contact.PostalAddress) { - self.proto = proto - } - - @objc - public func serializedData() throws -> Data { - return try self.proto.serializedData() - } - - @objc public class func parseData(_ serializedData: Data) throws -> SNProtoDataMessageContactPostalAddress { - let proto = try SessionProtos_DataMessage.Contact.PostalAddress(serializedData: serializedData) - return try parseProto(proto) - } - - fileprivate class func parseProto(_ proto: SessionProtos_DataMessage.Contact.PostalAddress) throws -> SNProtoDataMessageContactPostalAddress { - // MARK: - Begin Validation Logic for SNProtoDataMessageContactPostalAddress - - - // MARK: - End Validation Logic for SNProtoDataMessageContactPostalAddress - - - let result = SNProtoDataMessageContactPostalAddress(proto: proto) - return result - } - - @objc public override var debugDescription: String { - return "\(proto)" - } -} - -#if DEBUG - -extension SNProtoDataMessageContactPostalAddress { - @objc public func serializedDataIgnoringErrors() -> Data? { - return try! self.serializedData() - } -} - -extension SNProtoDataMessageContactPostalAddress.SNProtoDataMessageContactPostalAddressBuilder { - @objc public func buildIgnoringErrors() -> SNProtoDataMessageContactPostalAddress? { - return try! self.build() - } -} - -#endif - -// MARK: - SNProtoDataMessageContactAvatar - -@objc public class SNProtoDataMessageContactAvatar: NSObject { - - // MARK: - SNProtoDataMessageContactAvatarBuilder - - @objc public class func builder() -> SNProtoDataMessageContactAvatarBuilder { - return SNProtoDataMessageContactAvatarBuilder() - } - - // asBuilder() constructs a builder that reflects the proto's contents. - @objc public func asBuilder() -> SNProtoDataMessageContactAvatarBuilder { - let builder = SNProtoDataMessageContactAvatarBuilder() - if let _value = avatar { - builder.setAvatar(_value) - } - if hasIsProfile { - builder.setIsProfile(isProfile) - } - return builder - } - - @objc public class SNProtoDataMessageContactAvatarBuilder: NSObject { - - private var proto = SessionProtos_DataMessage.Contact.Avatar() - - @objc fileprivate override init() {} - - @objc public func setAvatar(_ valueParam: SNProtoAttachmentPointer) { - proto.avatar = valueParam.proto - } - - @objc public func setIsProfile(_ valueParam: Bool) { - proto.isProfile = valueParam - } - - @objc public func build() throws -> SNProtoDataMessageContactAvatar { - return try SNProtoDataMessageContactAvatar.parseProto(proto) - } - - @objc public func buildSerializedData() throws -> Data { - return try SNProtoDataMessageContactAvatar.parseProto(proto).serializedData() - } - } - - fileprivate let proto: SessionProtos_DataMessage.Contact.Avatar - - @objc public let avatar: SNProtoAttachmentPointer? - - @objc public var isProfile: Bool { - return proto.isProfile - } - @objc public var hasIsProfile: Bool { - return proto.hasIsProfile - } - - private init(proto: SessionProtos_DataMessage.Contact.Avatar, - avatar: SNProtoAttachmentPointer?) { - self.proto = proto - self.avatar = avatar - } - - @objc - public func serializedData() throws -> Data { - return try self.proto.serializedData() - } - - @objc public class func parseData(_ serializedData: Data) throws -> SNProtoDataMessageContactAvatar { - let proto = try SessionProtos_DataMessage.Contact.Avatar(serializedData: serializedData) - return try parseProto(proto) - } - - fileprivate class func parseProto(_ proto: SessionProtos_DataMessage.Contact.Avatar) throws -> SNProtoDataMessageContactAvatar { - var avatar: SNProtoAttachmentPointer? = nil - if proto.hasAvatar { - avatar = try SNProtoAttachmentPointer.parseProto(proto.avatar) - } - - // MARK: - Begin Validation Logic for SNProtoDataMessageContactAvatar - - - // MARK: - End Validation Logic for SNProtoDataMessageContactAvatar - - - let result = SNProtoDataMessageContactAvatar(proto: proto, - avatar: avatar) - return result - } - - @objc public override var debugDescription: String { - return "\(proto)" - } -} - -#if DEBUG - -extension SNProtoDataMessageContactAvatar { - @objc public func serializedDataIgnoringErrors() -> Data? { - return try! self.serializedData() - } -} - -extension SNProtoDataMessageContactAvatar.SNProtoDataMessageContactAvatarBuilder { - @objc public func buildIgnoringErrors() -> SNProtoDataMessageContactAvatar? { - return try! self.build() - } -} - -#endif - -// MARK: - SNProtoDataMessageContact - -@objc public class SNProtoDataMessageContact: NSObject { - - // MARK: - SNProtoDataMessageContactBuilder - - @objc public class func builder() -> SNProtoDataMessageContactBuilder { - return SNProtoDataMessageContactBuilder() - } - - // asBuilder() constructs a builder that reflects the proto's contents. - @objc public func asBuilder() -> SNProtoDataMessageContactBuilder { - let builder = SNProtoDataMessageContactBuilder() - if let _value = name { - builder.setName(_value) - } - builder.setNumber(number) - builder.setEmail(email) - builder.setAddress(address) - if let _value = avatar { - builder.setAvatar(_value) - } - if let _value = organization { - builder.setOrganization(_value) - } - return builder - } - - @objc public class SNProtoDataMessageContactBuilder: NSObject { - - private var proto = SessionProtos_DataMessage.Contact() - - @objc fileprivate override init() {} - - @objc public func setName(_ valueParam: SNProtoDataMessageContactName) { - proto.name = valueParam.proto - } - - @objc public func addNumber(_ valueParam: SNProtoDataMessageContactPhone) { - var items = proto.number - items.append(valueParam.proto) - proto.number = items - } - - @objc public func setNumber(_ wrappedItems: [SNProtoDataMessageContactPhone]) { - proto.number = wrappedItems.map { $0.proto } - } - - @objc public func addEmail(_ valueParam: SNProtoDataMessageContactEmail) { - var items = proto.email - items.append(valueParam.proto) - proto.email = items - } - - @objc public func setEmail(_ wrappedItems: [SNProtoDataMessageContactEmail]) { - proto.email = wrappedItems.map { $0.proto } - } - - @objc public func addAddress(_ valueParam: SNProtoDataMessageContactPostalAddress) { - var items = proto.address - items.append(valueParam.proto) - proto.address = items - } - - @objc public func setAddress(_ wrappedItems: [SNProtoDataMessageContactPostalAddress]) { - proto.address = wrappedItems.map { $0.proto } - } - - @objc public func setAvatar(_ valueParam: SNProtoDataMessageContactAvatar) { - proto.avatar = valueParam.proto - } - - @objc public func setOrganization(_ valueParam: String) { - proto.organization = valueParam - } - - @objc public func build() throws -> SNProtoDataMessageContact { - return try SNProtoDataMessageContact.parseProto(proto) - } - - @objc public func buildSerializedData() throws -> Data { - return try SNProtoDataMessageContact.parseProto(proto).serializedData() - } - } - - fileprivate let proto: SessionProtos_DataMessage.Contact - - @objc public let name: SNProtoDataMessageContactName? - - @objc public let number: [SNProtoDataMessageContactPhone] - - @objc public let email: [SNProtoDataMessageContactEmail] - - @objc public let address: [SNProtoDataMessageContactPostalAddress] - - @objc public let avatar: SNProtoDataMessageContactAvatar? - - @objc public var organization: String? { - guard proto.hasOrganization else { - return nil - } - return proto.organization - } - @objc public var hasOrganization: Bool { - return proto.hasOrganization - } - - private init(proto: SessionProtos_DataMessage.Contact, - name: SNProtoDataMessageContactName?, - number: [SNProtoDataMessageContactPhone], - email: [SNProtoDataMessageContactEmail], - address: [SNProtoDataMessageContactPostalAddress], - avatar: SNProtoDataMessageContactAvatar?) { - self.proto = proto - self.name = name - self.number = number - self.email = email - self.address = address - self.avatar = avatar + self.attachments = attachments } @objc @@ -1983,41 +852,33 @@ extension SNProtoDataMessageContactAvatar.SNProtoDataMessageContactAvatarBuilder return try self.proto.serializedData() } - @objc public class func parseData(_ serializedData: Data) throws -> SNProtoDataMessageContact { - let proto = try SessionProtos_DataMessage.Contact(serializedData: serializedData) + @objc public class func parseData(_ serializedData: Data) throws -> SNProtoDataMessageQuote { + let proto = try SessionProtos_DataMessage.Quote(serializedData: serializedData) return try parseProto(proto) } - fileprivate class func parseProto(_ proto: SessionProtos_DataMessage.Contact) throws -> SNProtoDataMessageContact { - var name: SNProtoDataMessageContactName? = nil - if proto.hasName { - name = try SNProtoDataMessageContactName.parseProto(proto.name) + fileprivate class func parseProto(_ proto: SessionProtos_DataMessage.Quote) throws -> SNProtoDataMessageQuote { + guard proto.hasID else { + throw SNProtoError.invalidProtobuf(description: "\(logTag) missing required field: id") } + let id = proto.id - var number: [SNProtoDataMessageContactPhone] = [] - number = try proto.number.map { try SNProtoDataMessageContactPhone.parseProto($0) } - - var email: [SNProtoDataMessageContactEmail] = [] - email = try proto.email.map { try SNProtoDataMessageContactEmail.parseProto($0) } - - var address: [SNProtoDataMessageContactPostalAddress] = [] - address = try proto.address.map { try SNProtoDataMessageContactPostalAddress.parseProto($0) } - - var avatar: SNProtoDataMessageContactAvatar? = nil - if proto.hasAvatar { - avatar = try SNProtoDataMessageContactAvatar.parseProto(proto.avatar) + guard proto.hasAuthor else { + throw SNProtoError.invalidProtobuf(description: "\(logTag) missing required field: author") } + let author = proto.author + + var attachments: [SNProtoDataMessageQuoteQuotedAttachment] = [] + attachments = try proto.attachments.map { try SNProtoDataMessageQuoteQuotedAttachment.parseProto($0) } - // MARK: - Begin Validation Logic for SNProtoDataMessageContact - + // MARK: - Begin Validation Logic for SNProtoDataMessageQuote - - // MARK: - End Validation Logic for SNProtoDataMessageContact - + // MARK: - End Validation Logic for SNProtoDataMessageQuote - - let result = SNProtoDataMessageContact(proto: proto, - name: name, - number: number, - email: email, - address: address, - avatar: avatar) + let result = SNProtoDataMessageQuote(proto: proto, + id: id, + author: author, + attachments: attachments) return result } @@ -2028,14 +889,14 @@ extension SNProtoDataMessageContactAvatar.SNProtoDataMessageContactAvatarBuilder #if DEBUG -extension SNProtoDataMessageContact { +extension SNProtoDataMessageQuote { @objc public func serializedDataIgnoringErrors() -> Data? { return try! self.serializedData() } } -extension SNProtoDataMessageContact.SNProtoDataMessageContactBuilder { - @objc public func buildIgnoringErrors() -> SNProtoDataMessageContact? { +extension SNProtoDataMessageQuote.SNProtoDataMessageQuoteBuilder { + @objc public func buildIgnoringErrors() -> SNProtoDataMessageQuote? { return try! self.build() } } @@ -2404,7 +1265,6 @@ extension SNProtoDataMessageClosedGroupControlMessageKeyPairWrapper.SNProtoDataM @objc public enum SNProtoDataMessageClosedGroupControlMessageType: Int32 { case new = 1 - case update = 2 case encryptionKeyPair = 3 case nameChange = 4 case membersAdded = 5 @@ -2416,7 +1276,6 @@ extension SNProtoDataMessageClosedGroupControlMessageKeyPairWrapper.SNProtoDataM private class func SNProtoDataMessageClosedGroupControlMessageTypeWrap(_ value: SessionProtos_DataMessage.ClosedGroupControlMessage.TypeEnum) -> SNProtoDataMessageClosedGroupControlMessageType { switch value { case .new: return .new - case .update: return .update case .encryptionKeyPair: return .encryptionKeyPair case .nameChange: return .nameChange case .membersAdded: return .membersAdded @@ -2429,7 +1288,6 @@ extension SNProtoDataMessageClosedGroupControlMessageKeyPairWrapper.SNProtoDataM private class func SNProtoDataMessageClosedGroupControlMessageTypeUnwrap(_ value: SNProtoDataMessageClosedGroupControlMessageType) -> SessionProtos_DataMessage.ClosedGroupControlMessage.TypeEnum { switch value { case .new: return .new - case .update: return .update case .encryptionKeyPair: return .encryptionKeyPair case .nameChange: return .nameChange case .membersAdded: return .membersAdded @@ -2685,7 +1543,6 @@ extension SNProtoDataMessageClosedGroupControlMessage.SNProtoDataMessageClosedGr if let _value = quote { builder.setQuote(_value) } - builder.setContact(contact) builder.setPreview(preview) if let _value = profile { builder.setProfile(_value) @@ -2743,16 +1600,6 @@ extension SNProtoDataMessageClosedGroupControlMessage.SNProtoDataMessageClosedGr proto.quote = valueParam.proto } - @objc public func addContact(_ valueParam: SNProtoDataMessageContact) { - var items = proto.contact - items.append(valueParam.proto) - proto.contact = items - } - - @objc public func setContact(_ wrappedItems: [SNProtoDataMessageContact]) { - proto.contact = wrappedItems.map { $0.proto } - } - @objc public func addPreview(_ valueParam: SNProtoDataMessagePreview) { var items = proto.preview items.append(valueParam.proto) @@ -2792,8 +1639,6 @@ extension SNProtoDataMessageClosedGroupControlMessage.SNProtoDataMessageClosedGr @objc public let quote: SNProtoDataMessageQuote? - @objc public let contact: [SNProtoDataMessageContact] - @objc public let preview: [SNProtoDataMessagePreview] @objc public let profile: SNProtoDataMessageLokiProfile? @@ -2855,7 +1700,6 @@ extension SNProtoDataMessageClosedGroupControlMessage.SNProtoDataMessageClosedGr attachments: [SNProtoAttachmentPointer], group: SNProtoGroupContext?, quote: SNProtoDataMessageQuote?, - contact: [SNProtoDataMessageContact], preview: [SNProtoDataMessagePreview], profile: SNProtoDataMessageLokiProfile?, closedGroupControlMessage: SNProtoDataMessageClosedGroupControlMessage?) { @@ -2863,7 +1707,6 @@ extension SNProtoDataMessageClosedGroupControlMessage.SNProtoDataMessageClosedGr self.attachments = attachments self.group = group self.quote = quote - self.contact = contact self.preview = preview self.profile = profile self.closedGroupControlMessage = closedGroupControlMessage @@ -2893,9 +1736,6 @@ extension SNProtoDataMessageClosedGroupControlMessage.SNProtoDataMessageClosedGr quote = try SNProtoDataMessageQuote.parseProto(proto.quote) } - var contact: [SNProtoDataMessageContact] = [] - contact = try proto.contact.map { try SNProtoDataMessageContact.parseProto($0) } - var preview: [SNProtoDataMessagePreview] = [] preview = try proto.preview.map { try SNProtoDataMessagePreview.parseProto($0) } @@ -2917,7 +1757,6 @@ extension SNProtoDataMessageClosedGroupControlMessage.SNProtoDataMessageClosedGr attachments: attachments, group: group, quote: quote, - contact: contact, preview: preview, profile: profile, closedGroupControlMessage: closedGroupControlMessage) @@ -3853,324 +2692,6 @@ extension SNProtoAttachmentPointer.SNProtoAttachmentPointerBuilder { #endif -// MARK: - SNProtoContactDetailsAvatar - -@objc public class SNProtoContactDetailsAvatar: NSObject { - - // MARK: - SNProtoContactDetailsAvatarBuilder - - @objc public class func builder() -> SNProtoContactDetailsAvatarBuilder { - return SNProtoContactDetailsAvatarBuilder() - } - - // asBuilder() constructs a builder that reflects the proto's contents. - @objc public func asBuilder() -> SNProtoContactDetailsAvatarBuilder { - let builder = SNProtoContactDetailsAvatarBuilder() - if let _value = contentType { - builder.setContentType(_value) - } - if hasLength { - builder.setLength(length) - } - return builder - } - - @objc public class SNProtoContactDetailsAvatarBuilder: NSObject { - - private var proto = SessionProtos_ContactDetails.Avatar() - - @objc fileprivate override init() {} - - @objc public func setContentType(_ valueParam: String) { - proto.contentType = valueParam - } - - @objc public func setLength(_ valueParam: UInt32) { - proto.length = valueParam - } - - @objc public func build() throws -> SNProtoContactDetailsAvatar { - return try SNProtoContactDetailsAvatar.parseProto(proto) - } - - @objc public func buildSerializedData() throws -> Data { - return try SNProtoContactDetailsAvatar.parseProto(proto).serializedData() - } - } - - fileprivate let proto: SessionProtos_ContactDetails.Avatar - - @objc public var contentType: String? { - guard proto.hasContentType else { - return nil - } - return proto.contentType - } - @objc public var hasContentType: Bool { - return proto.hasContentType - } - - @objc public var length: UInt32 { - return proto.length - } - @objc public var hasLength: Bool { - return proto.hasLength - } - - private init(proto: SessionProtos_ContactDetails.Avatar) { - self.proto = proto - } - - @objc - public func serializedData() throws -> Data { - return try self.proto.serializedData() - } - - @objc public class func parseData(_ serializedData: Data) throws -> SNProtoContactDetailsAvatar { - let proto = try SessionProtos_ContactDetails.Avatar(serializedData: serializedData) - return try parseProto(proto) - } - - fileprivate class func parseProto(_ proto: SessionProtos_ContactDetails.Avatar) throws -> SNProtoContactDetailsAvatar { - // MARK: - Begin Validation Logic for SNProtoContactDetailsAvatar - - - // MARK: - End Validation Logic for SNProtoContactDetailsAvatar - - - let result = SNProtoContactDetailsAvatar(proto: proto) - return result - } - - @objc public override var debugDescription: String { - return "\(proto)" - } -} - -#if DEBUG - -extension SNProtoContactDetailsAvatar { - @objc public func serializedDataIgnoringErrors() -> Data? { - return try! self.serializedData() - } -} - -extension SNProtoContactDetailsAvatar.SNProtoContactDetailsAvatarBuilder { - @objc public func buildIgnoringErrors() -> SNProtoContactDetailsAvatar? { - return try! self.build() - } -} - -#endif - -// MARK: - SNProtoContactDetails - -@objc public class SNProtoContactDetails: NSObject { - - // MARK: - SNProtoContactDetailsBuilder - - @objc public class func builder(number: String) -> SNProtoContactDetailsBuilder { - return SNProtoContactDetailsBuilder(number: number) - } - - // asBuilder() constructs a builder that reflects the proto's contents. - @objc public func asBuilder() -> SNProtoContactDetailsBuilder { - let builder = SNProtoContactDetailsBuilder(number: number) - if let _value = name { - builder.setName(_value) - } - if let _value = avatar { - builder.setAvatar(_value) - } - if let _value = color { - builder.setColor(_value) - } - if let _value = profileKey { - builder.setProfileKey(_value) - } - if hasBlocked { - builder.setBlocked(blocked) - } - if hasExpireTimer { - builder.setExpireTimer(expireTimer) - } - if let _value = nickname { - builder.setNickname(_value) - } - return builder - } - - @objc public class SNProtoContactDetailsBuilder: NSObject { - - private var proto = SessionProtos_ContactDetails() - - @objc fileprivate override init() {} - - @objc fileprivate init(number: String) { - super.init() - - setNumber(number) - } - - @objc public func setNumber(_ valueParam: String) { - proto.number = valueParam - } - - @objc public func setName(_ valueParam: String) { - proto.name = valueParam - } - - @objc public func setAvatar(_ valueParam: SNProtoContactDetailsAvatar) { - proto.avatar = valueParam.proto - } - - @objc public func setColor(_ valueParam: String) { - proto.color = valueParam - } - - @objc public func setProfileKey(_ valueParam: Data) { - proto.profileKey = valueParam - } - - @objc public func setBlocked(_ valueParam: Bool) { - proto.blocked = valueParam - } - - @objc public func setExpireTimer(_ valueParam: UInt32) { - proto.expireTimer = valueParam - } - - @objc public func setNickname(_ valueParam: String) { - proto.nickname = valueParam - } - - @objc public func build() throws -> SNProtoContactDetails { - return try SNProtoContactDetails.parseProto(proto) - } - - @objc public func buildSerializedData() throws -> Data { - return try SNProtoContactDetails.parseProto(proto).serializedData() - } - } - - fileprivate let proto: SessionProtos_ContactDetails - - @objc public let number: String - - @objc public let avatar: SNProtoContactDetailsAvatar? - - @objc public var name: String? { - guard proto.hasName else { - return nil - } - return proto.name - } - @objc public var hasName: Bool { - return proto.hasName - } - - @objc public var color: String? { - guard proto.hasColor else { - return nil - } - return proto.color - } - @objc public var hasColor: Bool { - return proto.hasColor - } - - @objc public var profileKey: Data? { - guard proto.hasProfileKey else { - return nil - } - return proto.profileKey - } - @objc public var hasProfileKey: Bool { - return proto.hasProfileKey - } - - @objc public var blocked: Bool { - return proto.blocked - } - @objc public var hasBlocked: Bool { - return proto.hasBlocked - } - - @objc public var expireTimer: UInt32 { - return proto.expireTimer - } - @objc public var hasExpireTimer: Bool { - return proto.hasExpireTimer - } - - @objc public var nickname: String? { - guard proto.hasNickname else { - return nil - } - return proto.nickname - } - @objc public var hasNickname: Bool { - return proto.hasNickname - } - - private init(proto: SessionProtos_ContactDetails, - number: String, - avatar: SNProtoContactDetailsAvatar?) { - self.proto = proto - self.number = number - self.avatar = avatar - } - - @objc - public func serializedData() throws -> Data { - return try self.proto.serializedData() - } - - @objc public class func parseData(_ serializedData: Data) throws -> SNProtoContactDetails { - let proto = try SessionProtos_ContactDetails(serializedData: serializedData) - return try parseProto(proto) - } - - fileprivate class func parseProto(_ proto: SessionProtos_ContactDetails) throws -> SNProtoContactDetails { - guard proto.hasNumber else { - throw SNProtoError.invalidProtobuf(description: "\(logTag) missing required field: number") - } - let number = proto.number - - var avatar: SNProtoContactDetailsAvatar? = nil - if proto.hasAvatar { - avatar = try SNProtoContactDetailsAvatar.parseProto(proto.avatar) - } - - // MARK: - Begin Validation Logic for SNProtoContactDetails - - - // MARK: - End Validation Logic for SNProtoContactDetails - - - let result = SNProtoContactDetails(proto: proto, - number: number, - avatar: avatar) - return result - } - - @objc public override var debugDescription: String { - return "\(proto)" - } -} - -#if DEBUG - -extension SNProtoContactDetails { - @objc public func serializedDataIgnoringErrors() -> Data? { - return try! self.serializedData() - } -} - -extension SNProtoContactDetails.SNProtoContactDetailsBuilder { - @objc public func buildIgnoringErrors() -> SNProtoContactDetails? { - return try! self.build() - } -} - -#endif - // MARK: - SNProtoGroupContext @objc public class SNProtoGroupContext: NSObject { diff --git a/SessionMessagingKit/Protos/Generated/SessionProtos.pb.swift b/SessionMessagingKit/Protos/Generated/SessionProtos.pb.swift index fad2efaf4..8fef1b1e5 100644 --- a/SessionMessagingKit/Protos/Generated/SessionProtos.pb.swift +++ b/SessionMessagingKit/Protos/Generated/SessionProtos.pb.swift @@ -1,10 +1,9 @@ // DO NOT EDIT. -// swift-format-ignore-file // // Generated by the Swift generator plugin for the protocol buffer compiler. // Source: SessionProtos.proto // -// For information on using the generated types, please see the documentation: +// For information on using the generated types, please see the documenation: // https://github.com/apple/swift-protobuf/ /// iOS - since we use a modern proto-compiler, we must specify the legacy proto format. @@ -15,7 +14,7 @@ import SwiftProtobuf // If the compiler emits an error on this type, it is because this file // was generated by a version of the `protoc` Swift plug-in that is // incompatible with the version of SwiftProtobuf to which you are linking. -// Please ensure that you are building against the same version of the API +// Please ensure that your are building against the same version of the API // that was used to generate this file. fileprivate struct _GeneratedWithProtocGenSwiftVersion: SwiftProtobuf.ProtobufAPIVersionCheck { struct _2: SwiftProtobuf.ProtobufAPIVersion_2 {} @@ -29,7 +28,7 @@ struct SessionProtos_Envelope { /// @required var type: SessionProtos_Envelope.TypeEnum { - get {return _type ?? .unidentifiedSender} + get {return _type ?? .sessionMessage} set {_type = newValue} } /// Returns true if `type` has been explicitly set. @@ -87,25 +86,25 @@ struct SessionProtos_Envelope { enum TypeEnum: SwiftProtobuf.Enum { typealias RawValue = Int - case unidentifiedSender // = 6 - case closedGroupCiphertext // = 7 + case sessionMessage // = 6 + case closedGroupMessage // = 7 init() { - self = .unidentifiedSender + self = .sessionMessage } init?(rawValue: Int) { switch rawValue { - case 6: self = .unidentifiedSender - case 7: self = .closedGroupCiphertext + case 6: self = .sessionMessage + case 7: self = .closedGroupMessage default: return nil } } var rawValue: Int { switch self { - case .unidentifiedSender: return 6 - case .closedGroupCiphertext: return 7 + case .sessionMessage: return 6 + case .closedGroupMessage: return 7 } } @@ -202,82 +201,46 @@ struct SessionProtos_Content { // methods supported on all messages. var dataMessage: SessionProtos_DataMessage { - get {return _dataMessage ?? SessionProtos_DataMessage()} - set {_dataMessage = newValue} + get {return _storage._dataMessage ?? SessionProtos_DataMessage()} + set {_uniqueStorage()._dataMessage = newValue} } /// Returns true if `dataMessage` has been explicitly set. - var hasDataMessage: Bool {return self._dataMessage != nil} + var hasDataMessage: Bool {return _storage._dataMessage != nil} /// Clears the value of `dataMessage`. Subsequent reads from it will return its default value. - mutating func clearDataMessage() {self._dataMessage = nil} + mutating func clearDataMessage() {_uniqueStorage()._dataMessage = nil} var receiptMessage: SessionProtos_ReceiptMessage { - get {return _receiptMessage ?? SessionProtos_ReceiptMessage()} - set {_receiptMessage = newValue} + get {return _storage._receiptMessage ?? SessionProtos_ReceiptMessage()} + set {_uniqueStorage()._receiptMessage = newValue} } /// Returns true if `receiptMessage` has been explicitly set. - var hasReceiptMessage: Bool {return self._receiptMessage != nil} + var hasReceiptMessage: Bool {return _storage._receiptMessage != nil} /// Clears the value of `receiptMessage`. Subsequent reads from it will return its default value. - mutating func clearReceiptMessage() {self._receiptMessage = nil} + mutating func clearReceiptMessage() {_uniqueStorage()._receiptMessage = nil} var typingMessage: SessionProtos_TypingMessage { - get {return _typingMessage ?? SessionProtos_TypingMessage()} - set {_typingMessage = newValue} + get {return _storage._typingMessage ?? SessionProtos_TypingMessage()} + set {_uniqueStorage()._typingMessage = newValue} } /// Returns true if `typingMessage` has been explicitly set. - var hasTypingMessage: Bool {return self._typingMessage != nil} + var hasTypingMessage: Bool {return _storage._typingMessage != nil} /// Clears the value of `typingMessage`. Subsequent reads from it will return its default value. - mutating func clearTypingMessage() {self._typingMessage = nil} + mutating func clearTypingMessage() {_uniqueStorage()._typingMessage = nil} var configurationMessage: SessionProtos_ConfigurationMessage { - get {return _configurationMessage ?? SessionProtos_ConfigurationMessage()} - set {_configurationMessage = newValue} + get {return _storage._configurationMessage ?? SessionProtos_ConfigurationMessage()} + set {_uniqueStorage()._configurationMessage = newValue} } /// Returns true if `configurationMessage` has been explicitly set. - var hasConfigurationMessage: Bool {return self._configurationMessage != nil} + var hasConfigurationMessage: Bool {return _storage._configurationMessage != nil} /// Clears the value of `configurationMessage`. Subsequent reads from it will return its default value. - mutating func clearConfigurationMessage() {self._configurationMessage = nil} + mutating func clearConfigurationMessage() {_uniqueStorage()._configurationMessage = nil} var unknownFields = SwiftProtobuf.UnknownStorage() init() {} - fileprivate var _dataMessage: SessionProtos_DataMessage? = nil - fileprivate var _receiptMessage: SessionProtos_ReceiptMessage? = nil - fileprivate var _typingMessage: SessionProtos_TypingMessage? = nil - fileprivate var _configurationMessage: SessionProtos_ConfigurationMessage? = nil -} - -struct SessionProtos_ClosedGroupCiphertextMessageWrapper { - // SwiftProtobuf.Message conformance is added in an extension below. See the - // `Message` and `Message+*Additions` files in the SwiftProtobuf library for - // methods supported on all messages. - - /// @required - var ciphertext: Data { - get {return _ciphertext ?? SwiftProtobuf.Internal.emptyData} - set {_ciphertext = newValue} - } - /// Returns true if `ciphertext` has been explicitly set. - var hasCiphertext: Bool {return self._ciphertext != nil} - /// Clears the value of `ciphertext`. Subsequent reads from it will return its default value. - mutating func clearCiphertext() {self._ciphertext = nil} - - /// @required - var ephemeralPublicKey: Data { - get {return _ephemeralPublicKey ?? SwiftProtobuf.Internal.emptyData} - set {_ephemeralPublicKey = newValue} - } - /// Returns true if `ephemeralPublicKey` has been explicitly set. - var hasEphemeralPublicKey: Bool {return self._ephemeralPublicKey != nil} - /// Clears the value of `ephemeralPublicKey`. Subsequent reads from it will return its default value. - mutating func clearEphemeralPublicKey() {self._ephemeralPublicKey = nil} - - var unknownFields = SwiftProtobuf.UnknownStorage() - - init() {} - - fileprivate var _ciphertext: Data? = nil - fileprivate var _ephemeralPublicKey: Data? = nil + fileprivate var _storage = _StorageClass.defaultInstance } struct SessionProtos_KeyPair { @@ -319,100 +282,104 @@ struct SessionProtos_DataMessage { // methods supported on all messages. var body: String { - get {return _body ?? String()} - set {_body = newValue} + get {return _storage._body ?? String()} + set {_uniqueStorage()._body = newValue} } /// Returns true if `body` has been explicitly set. - var hasBody: Bool {return self._body != nil} + var hasBody: Bool {return _storage._body != nil} /// Clears the value of `body`. Subsequent reads from it will return its default value. - mutating func clearBody() {self._body = nil} + mutating func clearBody() {_uniqueStorage()._body = nil} - var attachments: [SessionProtos_AttachmentPointer] = [] + var attachments: [SessionProtos_AttachmentPointer] { + get {return _storage._attachments} + set {_uniqueStorage()._attachments = newValue} + } var group: SessionProtos_GroupContext { - get {return _group ?? SessionProtos_GroupContext()} - set {_group = newValue} + get {return _storage._group ?? SessionProtos_GroupContext()} + set {_uniqueStorage()._group = newValue} } /// Returns true if `group` has been explicitly set. - var hasGroup: Bool {return self._group != nil} + var hasGroup: Bool {return _storage._group != nil} /// Clears the value of `group`. Subsequent reads from it will return its default value. - mutating func clearGroup() {self._group = nil} + mutating func clearGroup() {_uniqueStorage()._group = nil} var flags: UInt32 { - get {return _flags ?? 0} - set {_flags = newValue} + get {return _storage._flags ?? 0} + set {_uniqueStorage()._flags = newValue} } /// Returns true if `flags` has been explicitly set. - var hasFlags: Bool {return self._flags != nil} + var hasFlags: Bool {return _storage._flags != nil} /// Clears the value of `flags`. Subsequent reads from it will return its default value. - mutating func clearFlags() {self._flags = nil} + mutating func clearFlags() {_uniqueStorage()._flags = nil} var expireTimer: UInt32 { - get {return _expireTimer ?? 0} - set {_expireTimer = newValue} + get {return _storage._expireTimer ?? 0} + set {_uniqueStorage()._expireTimer = newValue} } /// Returns true if `expireTimer` has been explicitly set. - var hasExpireTimer: Bool {return self._expireTimer != nil} + var hasExpireTimer: Bool {return _storage._expireTimer != nil} /// Clears the value of `expireTimer`. Subsequent reads from it will return its default value. - mutating func clearExpireTimer() {self._expireTimer = nil} + mutating func clearExpireTimer() {_uniqueStorage()._expireTimer = nil} var profileKey: Data { - get {return _profileKey ?? SwiftProtobuf.Internal.emptyData} - set {_profileKey = newValue} + get {return _storage._profileKey ?? SwiftProtobuf.Internal.emptyData} + set {_uniqueStorage()._profileKey = newValue} } /// Returns true if `profileKey` has been explicitly set. - var hasProfileKey: Bool {return self._profileKey != nil} + var hasProfileKey: Bool {return _storage._profileKey != nil} /// Clears the value of `profileKey`. Subsequent reads from it will return its default value. - mutating func clearProfileKey() {self._profileKey = nil} + mutating func clearProfileKey() {_uniqueStorage()._profileKey = nil} var timestamp: UInt64 { - get {return _timestamp ?? 0} - set {_timestamp = newValue} + get {return _storage._timestamp ?? 0} + set {_uniqueStorage()._timestamp = newValue} } /// Returns true if `timestamp` has been explicitly set. - var hasTimestamp: Bool {return self._timestamp != nil} + var hasTimestamp: Bool {return _storage._timestamp != nil} /// Clears the value of `timestamp`. Subsequent reads from it will return its default value. - mutating func clearTimestamp() {self._timestamp = nil} + mutating func clearTimestamp() {_uniqueStorage()._timestamp = nil} var quote: SessionProtos_DataMessage.Quote { - get {return _quote ?? SessionProtos_DataMessage.Quote()} - set {_quote = newValue} + get {return _storage._quote ?? SessionProtos_DataMessage.Quote()} + set {_uniqueStorage()._quote = newValue} } /// Returns true if `quote` has been explicitly set. - var hasQuote: Bool {return self._quote != nil} + var hasQuote: Bool {return _storage._quote != nil} /// Clears the value of `quote`. Subsequent reads from it will return its default value. - mutating func clearQuote() {self._quote = nil} - - var contact: [SessionProtos_DataMessage.Contact] = [] + mutating func clearQuote() {_uniqueStorage()._quote = nil} - var preview: [SessionProtos_DataMessage.Preview] = [] + var preview: [SessionProtos_DataMessage.Preview] { + get {return _storage._preview} + set {_uniqueStorage()._preview = newValue} + } var profile: SessionProtos_DataMessage.LokiProfile { - get {return _profile ?? SessionProtos_DataMessage.LokiProfile()} - set {_profile = newValue} + get {return _storage._profile ?? SessionProtos_DataMessage.LokiProfile()} + set {_uniqueStorage()._profile = newValue} } /// Returns true if `profile` has been explicitly set. - var hasProfile: Bool {return self._profile != nil} + var hasProfile: Bool {return _storage._profile != nil} /// Clears the value of `profile`. Subsequent reads from it will return its default value. - mutating func clearProfile() {self._profile = nil} + mutating func clearProfile() {_uniqueStorage()._profile = nil} var closedGroupControlMessage: SessionProtos_DataMessage.ClosedGroupControlMessage { - get {return _closedGroupControlMessage ?? SessionProtos_DataMessage.ClosedGroupControlMessage()} - set {_closedGroupControlMessage = newValue} + get {return _storage._closedGroupControlMessage ?? SessionProtos_DataMessage.ClosedGroupControlMessage()} + set {_uniqueStorage()._closedGroupControlMessage = newValue} } /// Returns true if `closedGroupControlMessage` has been explicitly set. - var hasClosedGroupControlMessage: Bool {return self._closedGroupControlMessage != nil} + var hasClosedGroupControlMessage: Bool {return _storage._closedGroupControlMessage != nil} /// Clears the value of `closedGroupControlMessage`. Subsequent reads from it will return its default value. - mutating func clearClosedGroupControlMessage() {self._closedGroupControlMessage = nil} + mutating func clearClosedGroupControlMessage() {_uniqueStorage()._closedGroupControlMessage = nil} var syncTarget: String { - get {return _syncTarget ?? String()} - set {_syncTarget = newValue} + get {return _storage._syncTarget ?? String()} + set {_uniqueStorage()._syncTarget = newValue} } /// Returns true if `syncTarget` has been explicitly set. - var hasSyncTarget: Bool {return self._syncTarget != nil} + var hasSyncTarget: Bool {return _storage._syncTarget != nil} /// Clears the value of `syncTarget`. Subsequent reads from it will return its default value. - mutating func clearSyncTarget() {self._syncTarget = nil} + mutating func clearSyncTarget() {_uniqueStorage()._syncTarget = nil} var unknownFields = SwiftProtobuf.UnknownStorage() @@ -483,40 +450,40 @@ struct SessionProtos_DataMessage { // methods supported on all messages. var contentType: String { - get {return _contentType ?? String()} - set {_contentType = newValue} + get {return _storage._contentType ?? String()} + set {_uniqueStorage()._contentType = newValue} } /// Returns true if `contentType` has been explicitly set. - var hasContentType: Bool {return self._contentType != nil} + var hasContentType: Bool {return _storage._contentType != nil} /// Clears the value of `contentType`. Subsequent reads from it will return its default value. - mutating func clearContentType() {self._contentType = nil} + mutating func clearContentType() {_uniqueStorage()._contentType = nil} var fileName: String { - get {return _fileName ?? String()} - set {_fileName = newValue} + get {return _storage._fileName ?? String()} + set {_uniqueStorage()._fileName = newValue} } /// Returns true if `fileName` has been explicitly set. - var hasFileName: Bool {return self._fileName != nil} + var hasFileName: Bool {return _storage._fileName != nil} /// Clears the value of `fileName`. Subsequent reads from it will return its default value. - mutating func clearFileName() {self._fileName = nil} + mutating func clearFileName() {_uniqueStorage()._fileName = nil} var thumbnail: SessionProtos_AttachmentPointer { - get {return _thumbnail ?? SessionProtos_AttachmentPointer()} - set {_thumbnail = newValue} + get {return _storage._thumbnail ?? SessionProtos_AttachmentPointer()} + set {_uniqueStorage()._thumbnail = newValue} } /// Returns true if `thumbnail` has been explicitly set. - var hasThumbnail: Bool {return self._thumbnail != nil} + var hasThumbnail: Bool {return _storage._thumbnail != nil} /// Clears the value of `thumbnail`. Subsequent reads from it will return its default value. - mutating func clearThumbnail() {self._thumbnail = nil} + mutating func clearThumbnail() {_uniqueStorage()._thumbnail = nil} var flags: UInt32 { - get {return _flags ?? 0} - set {_flags = newValue} + get {return _storage._flags ?? 0} + set {_uniqueStorage()._flags = newValue} } /// Returns true if `flags` has been explicitly set. - var hasFlags: Bool {return self._flags != nil} + var hasFlags: Bool {return _storage._flags != nil} /// Clears the value of `flags`. Subsequent reads from it will return its default value. - mutating func clearFlags() {self._flags = nil} + mutating func clearFlags() {_uniqueStorage()._flags = nil} var unknownFields = SwiftProtobuf.UnknownStorage() @@ -545,10 +512,7 @@ struct SessionProtos_DataMessage { init() {} - fileprivate var _contentType: String? = nil - fileprivate var _fileName: String? = nil - fileprivate var _thumbnail: SessionProtos_AttachmentPointer? = nil - fileprivate var _flags: UInt32? = nil + fileprivate var _storage = _StorageClass.defaultInstance } init() {} @@ -558,431 +522,6 @@ struct SessionProtos_DataMessage { fileprivate var _text: String? = nil } - struct Contact { - // SwiftProtobuf.Message conformance is added in an extension below. See the - // `Message` and `Message+*Additions` files in the SwiftProtobuf library for - // methods supported on all messages. - - var name: SessionProtos_DataMessage.Contact.Name { - get {return _name ?? SessionProtos_DataMessage.Contact.Name()} - set {_name = newValue} - } - /// Returns true if `name` has been explicitly set. - var hasName: Bool {return self._name != nil} - /// Clears the value of `name`. Subsequent reads from it will return its default value. - mutating func clearName() {self._name = nil} - - var number: [SessionProtos_DataMessage.Contact.Phone] = [] - - var email: [SessionProtos_DataMessage.Contact.Email] = [] - - var address: [SessionProtos_DataMessage.Contact.PostalAddress] = [] - - var avatar: SessionProtos_DataMessage.Contact.Avatar { - get {return _avatar ?? SessionProtos_DataMessage.Contact.Avatar()} - set {_avatar = newValue} - } - /// Returns true if `avatar` has been explicitly set. - var hasAvatar: Bool {return self._avatar != nil} - /// Clears the value of `avatar`. Subsequent reads from it will return its default value. - mutating func clearAvatar() {self._avatar = nil} - - var organization: String { - get {return _organization ?? String()} - set {_organization = newValue} - } - /// Returns true if `organization` has been explicitly set. - var hasOrganization: Bool {return self._organization != nil} - /// Clears the value of `organization`. Subsequent reads from it will return its default value. - mutating func clearOrganization() {self._organization = nil} - - var unknownFields = SwiftProtobuf.UnknownStorage() - - struct Name { - // SwiftProtobuf.Message conformance is added in an extension below. See the - // `Message` and `Message+*Additions` files in the SwiftProtobuf library for - // methods supported on all messages. - - var givenName: String { - get {return _givenName ?? String()} - set {_givenName = newValue} - } - /// Returns true if `givenName` has been explicitly set. - var hasGivenName: Bool {return self._givenName != nil} - /// Clears the value of `givenName`. Subsequent reads from it will return its default value. - mutating func clearGivenName() {self._givenName = nil} - - var familyName: String { - get {return _familyName ?? String()} - set {_familyName = newValue} - } - /// Returns true if `familyName` has been explicitly set. - var hasFamilyName: Bool {return self._familyName != nil} - /// Clears the value of `familyName`. Subsequent reads from it will return its default value. - mutating func clearFamilyName() {self._familyName = nil} - - var prefix: String { - get {return _prefix ?? String()} - set {_prefix = newValue} - } - /// Returns true if `prefix` has been explicitly set. - var hasPrefix: Bool {return self._prefix != nil} - /// Clears the value of `prefix`. Subsequent reads from it will return its default value. - mutating func clearPrefix() {self._prefix = nil} - - var suffix: String { - get {return _suffix ?? String()} - set {_suffix = newValue} - } - /// Returns true if `suffix` has been explicitly set. - var hasSuffix: Bool {return self._suffix != nil} - /// Clears the value of `suffix`. Subsequent reads from it will return its default value. - mutating func clearSuffix() {self._suffix = nil} - - var middleName: String { - get {return _middleName ?? String()} - set {_middleName = newValue} - } - /// Returns true if `middleName` has been explicitly set. - var hasMiddleName: Bool {return self._middleName != nil} - /// Clears the value of `middleName`. Subsequent reads from it will return its default value. - mutating func clearMiddleName() {self._middleName = nil} - - var displayName: String { - get {return _displayName ?? String()} - set {_displayName = newValue} - } - /// Returns true if `displayName` has been explicitly set. - var hasDisplayName: Bool {return self._displayName != nil} - /// Clears the value of `displayName`. Subsequent reads from it will return its default value. - mutating func clearDisplayName() {self._displayName = nil} - - var unknownFields = SwiftProtobuf.UnknownStorage() - - init() {} - - fileprivate var _givenName: String? = nil - fileprivate var _familyName: String? = nil - fileprivate var _prefix: String? = nil - fileprivate var _suffix: String? = nil - fileprivate var _middleName: String? = nil - fileprivate var _displayName: String? = nil - } - - struct Phone { - // SwiftProtobuf.Message conformance is added in an extension below. See the - // `Message` and `Message+*Additions` files in the SwiftProtobuf library for - // methods supported on all messages. - - var value: String { - get {return _value ?? String()} - set {_value = newValue} - } - /// Returns true if `value` has been explicitly set. - var hasValue: Bool {return self._value != nil} - /// Clears the value of `value`. Subsequent reads from it will return its default value. - mutating func clearValue() {self._value = nil} - - var type: SessionProtos_DataMessage.Contact.Phone.TypeEnum { - get {return _type ?? .home} - set {_type = newValue} - } - /// Returns true if `type` has been explicitly set. - var hasType: Bool {return self._type != nil} - /// Clears the value of `type`. Subsequent reads from it will return its default value. - mutating func clearType() {self._type = nil} - - var label: String { - get {return _label ?? String()} - set {_label = newValue} - } - /// Returns true if `label` has been explicitly set. - var hasLabel: Bool {return self._label != nil} - /// Clears the value of `label`. Subsequent reads from it will return its default value. - mutating func clearLabel() {self._label = nil} - - var unknownFields = SwiftProtobuf.UnknownStorage() - - enum TypeEnum: SwiftProtobuf.Enum { - typealias RawValue = Int - case home // = 1 - case mobile // = 2 - case work // = 3 - case custom // = 4 - - init() { - self = .home - } - - init?(rawValue: Int) { - switch rawValue { - case 1: self = .home - case 2: self = .mobile - case 3: self = .work - case 4: self = .custom - default: return nil - } - } - - var rawValue: Int { - switch self { - case .home: return 1 - case .mobile: return 2 - case .work: return 3 - case .custom: return 4 - } - } - - } - - init() {} - - fileprivate var _value: String? = nil - fileprivate var _type: SessionProtos_DataMessage.Contact.Phone.TypeEnum? = nil - fileprivate var _label: String? = nil - } - - struct Email { - // SwiftProtobuf.Message conformance is added in an extension below. See the - // `Message` and `Message+*Additions` files in the SwiftProtobuf library for - // methods supported on all messages. - - var value: String { - get {return _value ?? String()} - set {_value = newValue} - } - /// Returns true if `value` has been explicitly set. - var hasValue: Bool {return self._value != nil} - /// Clears the value of `value`. Subsequent reads from it will return its default value. - mutating func clearValue() {self._value = nil} - - var type: SessionProtos_DataMessage.Contact.Email.TypeEnum { - get {return _type ?? .home} - set {_type = newValue} - } - /// Returns true if `type` has been explicitly set. - var hasType: Bool {return self._type != nil} - /// Clears the value of `type`. Subsequent reads from it will return its default value. - mutating func clearType() {self._type = nil} - - var label: String { - get {return _label ?? String()} - set {_label = newValue} - } - /// Returns true if `label` has been explicitly set. - var hasLabel: Bool {return self._label != nil} - /// Clears the value of `label`. Subsequent reads from it will return its default value. - mutating func clearLabel() {self._label = nil} - - var unknownFields = SwiftProtobuf.UnknownStorage() - - enum TypeEnum: SwiftProtobuf.Enum { - typealias RawValue = Int - case home // = 1 - case mobile // = 2 - case work // = 3 - case custom // = 4 - - init() { - self = .home - } - - init?(rawValue: Int) { - switch rawValue { - case 1: self = .home - case 2: self = .mobile - case 3: self = .work - case 4: self = .custom - default: return nil - } - } - - var rawValue: Int { - switch self { - case .home: return 1 - case .mobile: return 2 - case .work: return 3 - case .custom: return 4 - } - } - - } - - init() {} - - fileprivate var _value: String? = nil - fileprivate var _type: SessionProtos_DataMessage.Contact.Email.TypeEnum? = nil - fileprivate var _label: String? = nil - } - - struct PostalAddress { - // SwiftProtobuf.Message conformance is added in an extension below. See the - // `Message` and `Message+*Additions` files in the SwiftProtobuf library for - // methods supported on all messages. - - var type: SessionProtos_DataMessage.Contact.PostalAddress.TypeEnum { - get {return _type ?? .home} - set {_type = newValue} - } - /// Returns true if `type` has been explicitly set. - var hasType: Bool {return self._type != nil} - /// Clears the value of `type`. Subsequent reads from it will return its default value. - mutating func clearType() {self._type = nil} - - var label: String { - get {return _label ?? String()} - set {_label = newValue} - } - /// Returns true if `label` has been explicitly set. - var hasLabel: Bool {return self._label != nil} - /// Clears the value of `label`. Subsequent reads from it will return its default value. - mutating func clearLabel() {self._label = nil} - - var street: String { - get {return _street ?? String()} - set {_street = newValue} - } - /// Returns true if `street` has been explicitly set. - var hasStreet: Bool {return self._street != nil} - /// Clears the value of `street`. Subsequent reads from it will return its default value. - mutating func clearStreet() {self._street = nil} - - var pobox: String { - get {return _pobox ?? String()} - set {_pobox = newValue} - } - /// Returns true if `pobox` has been explicitly set. - var hasPobox: Bool {return self._pobox != nil} - /// Clears the value of `pobox`. Subsequent reads from it will return its default value. - mutating func clearPobox() {self._pobox = nil} - - var neighborhood: String { - get {return _neighborhood ?? String()} - set {_neighborhood = newValue} - } - /// Returns true if `neighborhood` has been explicitly set. - var hasNeighborhood: Bool {return self._neighborhood != nil} - /// Clears the value of `neighborhood`. Subsequent reads from it will return its default value. - mutating func clearNeighborhood() {self._neighborhood = nil} - - var city: String { - get {return _city ?? String()} - set {_city = newValue} - } - /// Returns true if `city` has been explicitly set. - var hasCity: Bool {return self._city != nil} - /// Clears the value of `city`. Subsequent reads from it will return its default value. - mutating func clearCity() {self._city = nil} - - var region: String { - get {return _region ?? String()} - set {_region = newValue} - } - /// Returns true if `region` has been explicitly set. - var hasRegion: Bool {return self._region != nil} - /// Clears the value of `region`. Subsequent reads from it will return its default value. - mutating func clearRegion() {self._region = nil} - - var postcode: String { - get {return _postcode ?? String()} - set {_postcode = newValue} - } - /// Returns true if `postcode` has been explicitly set. - var hasPostcode: Bool {return self._postcode != nil} - /// Clears the value of `postcode`. Subsequent reads from it will return its default value. - mutating func clearPostcode() {self._postcode = nil} - - var country: String { - get {return _country ?? String()} - set {_country = newValue} - } - /// Returns true if `country` has been explicitly set. - var hasCountry: Bool {return self._country != nil} - /// Clears the value of `country`. Subsequent reads from it will return its default value. - mutating func clearCountry() {self._country = nil} - - var unknownFields = SwiftProtobuf.UnknownStorage() - - enum TypeEnum: SwiftProtobuf.Enum { - typealias RawValue = Int - case home // = 1 - case work // = 2 - case custom // = 3 - - init() { - self = .home - } - - init?(rawValue: Int) { - switch rawValue { - case 1: self = .home - case 2: self = .work - case 3: self = .custom - default: return nil - } - } - - var rawValue: Int { - switch self { - case .home: return 1 - case .work: return 2 - case .custom: return 3 - } - } - - } - - init() {} - - fileprivate var _type: SessionProtos_DataMessage.Contact.PostalAddress.TypeEnum? = nil - fileprivate var _label: String? = nil - fileprivate var _street: String? = nil - fileprivate var _pobox: String? = nil - fileprivate var _neighborhood: String? = nil - fileprivate var _city: String? = nil - fileprivate var _region: String? = nil - fileprivate var _postcode: String? = nil - fileprivate var _country: String? = nil - } - - struct Avatar { - // SwiftProtobuf.Message conformance is added in an extension below. See the - // `Message` and `Message+*Additions` files in the SwiftProtobuf library for - // methods supported on all messages. - - var avatar: SessionProtos_AttachmentPointer { - get {return _avatar ?? SessionProtos_AttachmentPointer()} - set {_avatar = newValue} - } - /// Returns true if `avatar` has been explicitly set. - var hasAvatar: Bool {return self._avatar != nil} - /// Clears the value of `avatar`. Subsequent reads from it will return its default value. - mutating func clearAvatar() {self._avatar = nil} - - var isProfile: Bool { - get {return _isProfile ?? false} - set {_isProfile = newValue} - } - /// Returns true if `isProfile` has been explicitly set. - var hasIsProfile: Bool {return self._isProfile != nil} - /// Clears the value of `isProfile`. Subsequent reads from it will return its default value. - mutating func clearIsProfile() {self._isProfile = nil} - - var unknownFields = SwiftProtobuf.UnknownStorage() - - init() {} - - fileprivate var _avatar: SessionProtos_AttachmentPointer? = nil - fileprivate var _isProfile: Bool? = nil - } - - init() {} - - fileprivate var _name: SessionProtos_DataMessage.Contact.Name? = nil - fileprivate var _avatar: SessionProtos_DataMessage.Contact.Avatar? = nil - fileprivate var _organization: String? = nil - } - struct Preview { // SwiftProtobuf.Message conformance is added in an extension below. See the // `Message` and `Message+*Additions` files in the SwiftProtobuf library for @@ -990,39 +529,37 @@ struct SessionProtos_DataMessage { /// @required var url: String { - get {return _url ?? String()} - set {_url = newValue} + get {return _storage._url ?? String()} + set {_uniqueStorage()._url = newValue} } /// Returns true if `url` has been explicitly set. - var hasURL: Bool {return self._url != nil} + var hasURL: Bool {return _storage._url != nil} /// Clears the value of `url`. Subsequent reads from it will return its default value. - mutating func clearURL() {self._url = nil} + mutating func clearURL() {_uniqueStorage()._url = nil} var title: String { - get {return _title ?? String()} - set {_title = newValue} + get {return _storage._title ?? String()} + set {_uniqueStorage()._title = newValue} } /// Returns true if `title` has been explicitly set. - var hasTitle: Bool {return self._title != nil} + var hasTitle: Bool {return _storage._title != nil} /// Clears the value of `title`. Subsequent reads from it will return its default value. - mutating func clearTitle() {self._title = nil} + mutating func clearTitle() {_uniqueStorage()._title = nil} var image: SessionProtos_AttachmentPointer { - get {return _image ?? SessionProtos_AttachmentPointer()} - set {_image = newValue} + get {return _storage._image ?? SessionProtos_AttachmentPointer()} + set {_uniqueStorage()._image = newValue} } /// Returns true if `image` has been explicitly set. - var hasImage: Bool {return self._image != nil} + var hasImage: Bool {return _storage._image != nil} /// Clears the value of `image`. Subsequent reads from it will return its default value. - mutating func clearImage() {self._image = nil} + mutating func clearImage() {_uniqueStorage()._image = nil} var unknownFields = SwiftProtobuf.UnknownStorage() init() {} - fileprivate var _url: String? = nil - fileprivate var _title: String? = nil - fileprivate var _image: SessionProtos_AttachmentPointer? = nil + fileprivate var _storage = _StorageClass.defaultInstance } struct LokiProfile { @@ -1063,46 +600,55 @@ struct SessionProtos_DataMessage { /// @required var type: SessionProtos_DataMessage.ClosedGroupControlMessage.TypeEnum { - get {return _type ?? .new} - set {_type = newValue} + get {return _storage._type ?? .new} + set {_uniqueStorage()._type = newValue} } /// Returns true if `type` has been explicitly set. - var hasType: Bool {return self._type != nil} + var hasType: Bool {return _storage._type != nil} /// Clears the value of `type`. Subsequent reads from it will return its default value. - mutating func clearType() {self._type = nil} + mutating func clearType() {_uniqueStorage()._type = nil} var publicKey: Data { - get {return _publicKey ?? SwiftProtobuf.Internal.emptyData} - set {_publicKey = newValue} + get {return _storage._publicKey ?? SwiftProtobuf.Internal.emptyData} + set {_uniqueStorage()._publicKey = newValue} } /// Returns true if `publicKey` has been explicitly set. - var hasPublicKey: Bool {return self._publicKey != nil} + var hasPublicKey: Bool {return _storage._publicKey != nil} /// Clears the value of `publicKey`. Subsequent reads from it will return its default value. - mutating func clearPublicKey() {self._publicKey = nil} + mutating func clearPublicKey() {_uniqueStorage()._publicKey = nil} var name: String { - get {return _name ?? String()} - set {_name = newValue} + get {return _storage._name ?? String()} + set {_uniqueStorage()._name = newValue} } /// Returns true if `name` has been explicitly set. - var hasName: Bool {return self._name != nil} + var hasName: Bool {return _storage._name != nil} /// Clears the value of `name`. Subsequent reads from it will return its default value. - mutating func clearName() {self._name = nil} + mutating func clearName() {_uniqueStorage()._name = nil} var encryptionKeyPair: SessionProtos_KeyPair { - get {return _encryptionKeyPair ?? SessionProtos_KeyPair()} - set {_encryptionKeyPair = newValue} + get {return _storage._encryptionKeyPair ?? SessionProtos_KeyPair()} + set {_uniqueStorage()._encryptionKeyPair = newValue} } /// Returns true if `encryptionKeyPair` has been explicitly set. - var hasEncryptionKeyPair: Bool {return self._encryptionKeyPair != nil} + var hasEncryptionKeyPair: Bool {return _storage._encryptionKeyPair != nil} /// Clears the value of `encryptionKeyPair`. Subsequent reads from it will return its default value. - mutating func clearEncryptionKeyPair() {self._encryptionKeyPair = nil} + mutating func clearEncryptionKeyPair() {_uniqueStorage()._encryptionKeyPair = nil} - var members: [Data] = [] + var members: [Data] { + get {return _storage._members} + set {_uniqueStorage()._members = newValue} + } - var admins: [Data] = [] + var admins: [Data] { + get {return _storage._admins} + set {_uniqueStorage()._admins = newValue} + } - var wrappers: [SessionProtos_DataMessage.ClosedGroupControlMessage.KeyPairWrapper] = [] + var wrappers: [SessionProtos_DataMessage.ClosedGroupControlMessage.KeyPairWrapper] { + get {return _storage._wrappers} + set {_uniqueStorage()._wrappers = newValue} + } var unknownFields = SwiftProtobuf.UnknownStorage() @@ -1112,9 +658,6 @@ struct SessionProtos_DataMessage { /// publicKey, name, encryptionKeyPair, members, admins case new // = 1 - /// name, members - case update // = 2 - /// publicKey, wrappers case encryptionKeyPair // = 3 @@ -1136,7 +679,6 @@ struct SessionProtos_DataMessage { init?(rawValue: Int) { switch rawValue { case 1: self = .new - case 2: self = .update case 3: self = .encryptionKeyPair case 4: self = .nameChange case 5: self = .membersAdded @@ -1150,7 +692,6 @@ struct SessionProtos_DataMessage { var rawValue: Int { switch self { case .new: return 1 - case .update: return 2 case .encryptionKeyPair: return 3 case .nameChange: return 4 case .membersAdded: return 5 @@ -1197,24 +738,12 @@ struct SessionProtos_DataMessage { init() {} - fileprivate var _type: SessionProtos_DataMessage.ClosedGroupControlMessage.TypeEnum? = nil - fileprivate var _publicKey: Data? = nil - fileprivate var _name: String? = nil - fileprivate var _encryptionKeyPair: SessionProtos_KeyPair? = nil + fileprivate var _storage = _StorageClass.defaultInstance } init() {} - fileprivate var _body: String? = nil - fileprivate var _group: SessionProtos_GroupContext? = nil - fileprivate var _flags: UInt32? = nil - fileprivate var _expireTimer: UInt32? = nil - fileprivate var _profileKey: Data? = nil - fileprivate var _timestamp: UInt64? = nil - fileprivate var _quote: SessionProtos_DataMessage.Quote? = nil - fileprivate var _profile: SessionProtos_DataMessage.LokiProfile? = nil - fileprivate var _closedGroupControlMessage: SessionProtos_DataMessage.ClosedGroupControlMessage? = nil - fileprivate var _syncTarget: String? = nil + fileprivate var _storage = _StorageClass.defaultInstance } #if swift(>=4.2) @@ -1223,26 +752,6 @@ extension SessionProtos_DataMessage.Flags: CaseIterable { // Support synthesized by the compiler. } -extension SessionProtos_DataMessage.Quote.QuotedAttachment.Flags: CaseIterable { - // Support synthesized by the compiler. -} - -extension SessionProtos_DataMessage.Contact.Phone.TypeEnum: CaseIterable { - // Support synthesized by the compiler. -} - -extension SessionProtos_DataMessage.Contact.Email.TypeEnum: CaseIterable { - // Support synthesized by the compiler. -} - -extension SessionProtos_DataMessage.Contact.PostalAddress.TypeEnum: CaseIterable { - // Support synthesized by the compiler. -} - -extension SessionProtos_DataMessage.ClosedGroupControlMessage.TypeEnum: CaseIterable { - // Support synthesized by the compiler. -} - #endif // swift(>=4.2) struct SessionProtos_ConfigurationMessage { @@ -1291,43 +800,47 @@ struct SessionProtos_ConfigurationMessage { // methods supported on all messages. var publicKey: Data { - get {return _publicKey ?? SwiftProtobuf.Internal.emptyData} - set {_publicKey = newValue} + get {return _storage._publicKey ?? SwiftProtobuf.Internal.emptyData} + set {_uniqueStorage()._publicKey = newValue} } /// Returns true if `publicKey` has been explicitly set. - var hasPublicKey: Bool {return self._publicKey != nil} + var hasPublicKey: Bool {return _storage._publicKey != nil} /// Clears the value of `publicKey`. Subsequent reads from it will return its default value. - mutating func clearPublicKey() {self._publicKey = nil} + mutating func clearPublicKey() {_uniqueStorage()._publicKey = nil} var name: String { - get {return _name ?? String()} - set {_name = newValue} + get {return _storage._name ?? String()} + set {_uniqueStorage()._name = newValue} } /// Returns true if `name` has been explicitly set. - var hasName: Bool {return self._name != nil} + var hasName: Bool {return _storage._name != nil} /// Clears the value of `name`. Subsequent reads from it will return its default value. - mutating func clearName() {self._name = nil} + mutating func clearName() {_uniqueStorage()._name = nil} var encryptionKeyPair: SessionProtos_KeyPair { - get {return _encryptionKeyPair ?? SessionProtos_KeyPair()} - set {_encryptionKeyPair = newValue} + get {return _storage._encryptionKeyPair ?? SessionProtos_KeyPair()} + set {_uniqueStorage()._encryptionKeyPair = newValue} } /// Returns true if `encryptionKeyPair` has been explicitly set. - var hasEncryptionKeyPair: Bool {return self._encryptionKeyPair != nil} + var hasEncryptionKeyPair: Bool {return _storage._encryptionKeyPair != nil} /// Clears the value of `encryptionKeyPair`. Subsequent reads from it will return its default value. - mutating func clearEncryptionKeyPair() {self._encryptionKeyPair = nil} + mutating func clearEncryptionKeyPair() {_uniqueStorage()._encryptionKeyPair = nil} - var members: [Data] = [] + var members: [Data] { + get {return _storage._members} + set {_uniqueStorage()._members = newValue} + } - var admins: [Data] = [] + var admins: [Data] { + get {return _storage._admins} + set {_uniqueStorage()._admins = newValue} + } var unknownFields = SwiftProtobuf.UnknownStorage() init() {} - fileprivate var _publicKey: Data? = nil - fileprivate var _name: String? = nil - fileprivate var _encryptionKeyPair: SessionProtos_KeyPair? = nil + fileprivate var _storage = _StorageClass.defaultInstance } struct Contact { @@ -1611,177 +1124,60 @@ extension SessionProtos_AttachmentPointer.Flags: CaseIterable { #endif // swift(>=4.2) -struct SessionProtos_ContactDetails { +struct SessionProtos_GroupContext { // SwiftProtobuf.Message conformance is added in an extension below. See the // `Message` and `Message+*Additions` files in the SwiftProtobuf library for // methods supported on all messages. /// @required - var number: String { - get {return _number ?? String()} - set {_number = newValue} + var id: Data { + get {return _storage._id ?? SwiftProtobuf.Internal.emptyData} + set {_uniqueStorage()._id = newValue} + } + /// Returns true if `id` has been explicitly set. + var hasID: Bool {return _storage._id != nil} + /// Clears the value of `id`. Subsequent reads from it will return its default value. + mutating func clearID() {_uniqueStorage()._id = nil} + + /// @required + var type: SessionProtos_GroupContext.TypeEnum { + get {return _storage._type ?? .unknown} + set {_uniqueStorage()._type = newValue} } - /// Returns true if `number` has been explicitly set. - var hasNumber: Bool {return self._number != nil} - /// Clears the value of `number`. Subsequent reads from it will return its default value. - mutating func clearNumber() {self._number = nil} + /// Returns true if `type` has been explicitly set. + var hasType: Bool {return _storage._type != nil} + /// Clears the value of `type`. Subsequent reads from it will return its default value. + mutating func clearType() {_uniqueStorage()._type = nil} var name: String { - get {return _name ?? String()} - set {_name = newValue} + get {return _storage._name ?? String()} + set {_uniqueStorage()._name = newValue} } /// Returns true if `name` has been explicitly set. - var hasName: Bool {return self._name != nil} + var hasName: Bool {return _storage._name != nil} /// Clears the value of `name`. Subsequent reads from it will return its default value. - mutating func clearName() {self._name = nil} + mutating func clearName() {_uniqueStorage()._name = nil} + + var members: [String] { + get {return _storage._members} + set {_uniqueStorage()._members = newValue} + } - var avatar: SessionProtos_ContactDetails.Avatar { - get {return _avatar ?? SessionProtos_ContactDetails.Avatar()} - set {_avatar = newValue} + var avatar: SessionProtos_AttachmentPointer { + get {return _storage._avatar ?? SessionProtos_AttachmentPointer()} + set {_uniqueStorage()._avatar = newValue} } /// Returns true if `avatar` has been explicitly set. - var hasAvatar: Bool {return self._avatar != nil} + var hasAvatar: Bool {return _storage._avatar != nil} /// Clears the value of `avatar`. Subsequent reads from it will return its default value. - mutating func clearAvatar() {self._avatar = nil} + mutating func clearAvatar() {_uniqueStorage()._avatar = nil} - var color: String { - get {return _color ?? String()} - set {_color = newValue} + var admins: [String] { + get {return _storage._admins} + set {_uniqueStorage()._admins = newValue} } - /// Returns true if `color` has been explicitly set. - var hasColor: Bool {return self._color != nil} - /// Clears the value of `color`. Subsequent reads from it will return its default value. - mutating func clearColor() {self._color = nil} - var profileKey: Data { - get {return _profileKey ?? SwiftProtobuf.Internal.emptyData} - set {_profileKey = newValue} - } - /// Returns true if `profileKey` has been explicitly set. - var hasProfileKey: Bool {return self._profileKey != nil} - /// Clears the value of `profileKey`. Subsequent reads from it will return its default value. - mutating func clearProfileKey() {self._profileKey = nil} - - var blocked: Bool { - get {return _blocked ?? false} - set {_blocked = newValue} - } - /// Returns true if `blocked` has been explicitly set. - var hasBlocked: Bool {return self._blocked != nil} - /// Clears the value of `blocked`. Subsequent reads from it will return its default value. - mutating func clearBlocked() {self._blocked = nil} - - var expireTimer: UInt32 { - get {return _expireTimer ?? 0} - set {_expireTimer = newValue} - } - /// Returns true if `expireTimer` has been explicitly set. - var hasExpireTimer: Bool {return self._expireTimer != nil} - /// Clears the value of `expireTimer`. Subsequent reads from it will return its default value. - mutating func clearExpireTimer() {self._expireTimer = nil} - - var nickname: String { - get {return _nickname ?? String()} - set {_nickname = newValue} - } - /// Returns true if `nickname` has been explicitly set. - var hasNickname: Bool {return self._nickname != nil} - /// Clears the value of `nickname`. Subsequent reads from it will return its default value. - mutating func clearNickname() {self._nickname = nil} - - var unknownFields = SwiftProtobuf.UnknownStorage() - - struct Avatar { - // SwiftProtobuf.Message conformance is added in an extension below. See the - // `Message` and `Message+*Additions` files in the SwiftProtobuf library for - // methods supported on all messages. - - var contentType: String { - get {return _contentType ?? String()} - set {_contentType = newValue} - } - /// Returns true if `contentType` has been explicitly set. - var hasContentType: Bool {return self._contentType != nil} - /// Clears the value of `contentType`. Subsequent reads from it will return its default value. - mutating func clearContentType() {self._contentType = nil} - - var length: UInt32 { - get {return _length ?? 0} - set {_length = newValue} - } - /// Returns true if `length` has been explicitly set. - var hasLength: Bool {return self._length != nil} - /// Clears the value of `length`. Subsequent reads from it will return its default value. - mutating func clearLength() {self._length = nil} - - var unknownFields = SwiftProtobuf.UnknownStorage() - - init() {} - - fileprivate var _contentType: String? = nil - fileprivate var _length: UInt32? = nil - } - - init() {} - - fileprivate var _number: String? = nil - fileprivate var _name: String? = nil - fileprivate var _avatar: SessionProtos_ContactDetails.Avatar? = nil - fileprivate var _color: String? = nil - fileprivate var _profileKey: Data? = nil - fileprivate var _blocked: Bool? = nil - fileprivate var _expireTimer: UInt32? = nil - fileprivate var _nickname: String? = nil -} - -struct SessionProtos_GroupContext { - // SwiftProtobuf.Message conformance is added in an extension below. See the - // `Message` and `Message+*Additions` files in the SwiftProtobuf library for - // methods supported on all messages. - - /// @required - var id: Data { - get {return _id ?? SwiftProtobuf.Internal.emptyData} - set {_id = newValue} - } - /// Returns true if `id` has been explicitly set. - var hasID: Bool {return self._id != nil} - /// Clears the value of `id`. Subsequent reads from it will return its default value. - mutating func clearID() {self._id = nil} - - /// @required - var type: SessionProtos_GroupContext.TypeEnum { - get {return _type ?? .unknown} - set {_type = newValue} - } - /// Returns true if `type` has been explicitly set. - var hasType: Bool {return self._type != nil} - /// Clears the value of `type`. Subsequent reads from it will return its default value. - mutating func clearType() {self._type = nil} - - var name: String { - get {return _name ?? String()} - set {_name = newValue} - } - /// Returns true if `name` has been explicitly set. - var hasName: Bool {return self._name != nil} - /// Clears the value of `name`. Subsequent reads from it will return its default value. - mutating func clearName() {self._name = nil} - - var members: [String] = [] - - var avatar: SessionProtos_AttachmentPointer { - get {return _avatar ?? SessionProtos_AttachmentPointer()} - set {_avatar = newValue} - } - /// Returns true if `avatar` has been explicitly set. - var hasAvatar: Bool {return self._avatar != nil} - /// Clears the value of `avatar`. Subsequent reads from it will return its default value. - mutating func clearAvatar() {self._avatar = nil} - - var admins: [String] = [] - - var unknownFields = SwiftProtobuf.UnknownStorage() + var unknownFields = SwiftProtobuf.UnknownStorage() enum TypeEnum: SwiftProtobuf.Enum { typealias RawValue = Int @@ -1820,10 +1216,7 @@ struct SessionProtos_GroupContext { init() {} - fileprivate var _id: Data? = nil - fileprivate var _type: SessionProtos_GroupContext.TypeEnum? = nil - fileprivate var _name: String? = nil - fileprivate var _avatar: SessionProtos_AttachmentPointer? = nil + fileprivate var _storage = _StorageClass.defaultInstance } #if swift(>=4.2) @@ -1851,6 +1244,7 @@ extension SessionProtos_Envelope: SwiftProtobuf.Message, SwiftProtobuf._MessageI public var isInitialized: Bool { if self._type == nil {return false} + if self._timestamp == nil {return false} return true } @@ -1904,8 +1298,8 @@ extension SessionProtos_Envelope: SwiftProtobuf.Message, SwiftProtobuf._MessageI extension SessionProtos_Envelope.TypeEnum: SwiftProtobuf._ProtoNameProviding { static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ - 6: .same(proto: "UNIDENTIFIED_SENDER"), - 7: .same(proto: "CLOSED_GROUP_CIPHERTEXT"), + 6: .same(proto: "SESSION_MESSAGE"), + 7: .same(proto: "CLOSED_GROUP_MESSAGE"), ] } @@ -1916,6 +1310,12 @@ extension SessionProtos_TypingMessage: SwiftProtobuf.Message, SwiftProtobuf._Mes 2: .same(proto: "action"), ] + public var isInitialized: Bool { + if self._timestamp == nil {return false} + if self._action == nil {return false} + return true + } + mutating func decodeMessage(decoder: inout D) throws { while let fieldNumber = try decoder.nextFieldNumber() { switch fieldNumber { @@ -1960,80 +1360,87 @@ extension SessionProtos_Content: SwiftProtobuf.Message, SwiftProtobuf._MessageIm 7: .same(proto: "configurationMessage"), ] - public var isInitialized: Bool { - if let v = self._dataMessage, !v.isInitialized {return false} - if let v = self._configurationMessage, !v.isInitialized {return false} - return true - } + fileprivate class _StorageClass { + var _dataMessage: SessionProtos_DataMessage? = nil + var _receiptMessage: SessionProtos_ReceiptMessage? = nil + var _typingMessage: SessionProtos_TypingMessage? = nil + var _configurationMessage: SessionProtos_ConfigurationMessage? = nil - mutating func decodeMessage(decoder: inout D) throws { - while let fieldNumber = try decoder.nextFieldNumber() { - switch fieldNumber { - case 1: try decoder.decodeSingularMessageField(value: &self._dataMessage) - case 5: try decoder.decodeSingularMessageField(value: &self._receiptMessage) - case 6: try decoder.decodeSingularMessageField(value: &self._typingMessage) - case 7: try decoder.decodeSingularMessageField(value: &self._configurationMessage) - default: break - } + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _dataMessage = source._dataMessage + _receiptMessage = source._receiptMessage + _typingMessage = source._typingMessage + _configurationMessage = source._configurationMessage } } - func traverse(visitor: inout V) throws { - if let v = self._dataMessage { - try visitor.visitSingularMessageField(value: v, fieldNumber: 1) - } - if let v = self._receiptMessage { - try visitor.visitSingularMessageField(value: v, fieldNumber: 5) - } - if let v = self._typingMessage { - try visitor.visitSingularMessageField(value: v, fieldNumber: 6) - } - if let v = self._configurationMessage { - try visitor.visitSingularMessageField(value: v, fieldNumber: 7) + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) } - try unknownFields.traverse(visitor: &visitor) + return _storage } - static func ==(lhs: SessionProtos_Content, rhs: SessionProtos_Content) -> Bool { - if lhs._dataMessage != rhs._dataMessage {return false} - if lhs._receiptMessage != rhs._receiptMessage {return false} - if lhs._typingMessage != rhs._typingMessage {return false} - if lhs._configurationMessage != rhs._configurationMessage {return false} - if lhs.unknownFields != rhs.unknownFields {return false} - return true + public var isInitialized: Bool { + return withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if let v = _storage._dataMessage, !v.isInitialized {return false} + if let v = _storage._receiptMessage, !v.isInitialized {return false} + if let v = _storage._typingMessage, !v.isInitialized {return false} + if let v = _storage._configurationMessage, !v.isInitialized {return false} + return true + } } -} - -extension SessionProtos_ClosedGroupCiphertextMessageWrapper: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { - static let protoMessageName: String = _protobuf_package + ".ClosedGroupCiphertextMessageWrapper" - static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ - 1: .same(proto: "ciphertext"), - 2: .same(proto: "ephemeralPublicKey"), - ] mutating func decodeMessage(decoder: inout D) throws { - while let fieldNumber = try decoder.nextFieldNumber() { - switch fieldNumber { - case 1: try decoder.decodeSingularBytesField(value: &self._ciphertext) - case 2: try decoder.decodeSingularBytesField(value: &self._ephemeralPublicKey) - default: break + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularMessageField(value: &_storage._dataMessage) + case 5: try decoder.decodeSingularMessageField(value: &_storage._receiptMessage) + case 6: try decoder.decodeSingularMessageField(value: &_storage._typingMessage) + case 7: try decoder.decodeSingularMessageField(value: &_storage._configurationMessage) + default: break + } } } } func traverse(visitor: inout V) throws { - if let v = self._ciphertext { - try visitor.visitSingularBytesField(value: v, fieldNumber: 1) - } - if let v = self._ephemeralPublicKey { - try visitor.visitSingularBytesField(value: v, fieldNumber: 2) + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if let v = _storage._dataMessage { + try visitor.visitSingularMessageField(value: v, fieldNumber: 1) + } + if let v = _storage._receiptMessage { + try visitor.visitSingularMessageField(value: v, fieldNumber: 5) + } + if let v = _storage._typingMessage { + try visitor.visitSingularMessageField(value: v, fieldNumber: 6) + } + if let v = _storage._configurationMessage { + try visitor.visitSingularMessageField(value: v, fieldNumber: 7) + } } try unknownFields.traverse(visitor: &visitor) } - static func ==(lhs: SessionProtos_ClosedGroupCiphertextMessageWrapper, rhs: SessionProtos_ClosedGroupCiphertextMessageWrapper) -> Bool { - if lhs._ciphertext != rhs._ciphertext {return false} - if lhs._ephemeralPublicKey != rhs._ephemeralPublicKey {return false} + static func ==(lhs: SessionProtos_Content, rhs: SessionProtos_Content) -> Bool { + if lhs._storage !== rhs._storage { + let storagesAreEqual: Bool = withExtendedLifetime((lhs._storage, rhs._storage)) { (_args: (_StorageClass, _StorageClass)) in + let _storage = _args.0 + let rhs_storage = _args.1 + if _storage._dataMessage != rhs_storage._dataMessage {return false} + if _storage._receiptMessage != rhs_storage._receiptMessage {return false} + if _storage._typingMessage != rhs_storage._typingMessage {return false} + if _storage._configurationMessage != rhs_storage._configurationMessage {return false} + return true + } + if !storagesAreEqual {return false} + } if lhs.unknownFields != rhs.unknownFields {return false} return true } @@ -2091,96 +1498,150 @@ extension SessionProtos_DataMessage: SwiftProtobuf.Message, SwiftProtobuf._Messa 6: .same(proto: "profileKey"), 7: .same(proto: "timestamp"), 8: .same(proto: "quote"), - 9: .same(proto: "contact"), 10: .same(proto: "preview"), 101: .same(proto: "profile"), 104: .same(proto: "closedGroupControlMessage"), 105: .same(proto: "syncTarget"), ] + fileprivate class _StorageClass { + var _body: String? = nil + var _attachments: [SessionProtos_AttachmentPointer] = [] + var _group: SessionProtos_GroupContext? = nil + var _flags: UInt32? = nil + var _expireTimer: UInt32? = nil + var _profileKey: Data? = nil + var _timestamp: UInt64? = nil + var _quote: SessionProtos_DataMessage.Quote? = nil + var _preview: [SessionProtos_DataMessage.Preview] = [] + var _profile: SessionProtos_DataMessage.LokiProfile? = nil + var _closedGroupControlMessage: SessionProtos_DataMessage.ClosedGroupControlMessage? = nil + var _syncTarget: String? = nil + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _body = source._body + _attachments = source._attachments + _group = source._group + _flags = source._flags + _expireTimer = source._expireTimer + _profileKey = source._profileKey + _timestamp = source._timestamp + _quote = source._quote + _preview = source._preview + _profile = source._profile + _closedGroupControlMessage = source._closedGroupControlMessage + _syncTarget = source._syncTarget + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + public var isInitialized: Bool { - if let v = self._closedGroupControlMessage, !v.isInitialized {return false} - return true + return withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if !SwiftProtobuf.Internal.areAllInitialized(_storage._attachments) {return false} + if let v = _storage._group, !v.isInitialized {return false} + if let v = _storage._quote, !v.isInitialized {return false} + if !SwiftProtobuf.Internal.areAllInitialized(_storage._preview) {return false} + if let v = _storage._closedGroupControlMessage, !v.isInitialized {return false} + return true + } } mutating func decodeMessage(decoder: inout D) throws { - while let fieldNumber = try decoder.nextFieldNumber() { - switch fieldNumber { - case 1: try decoder.decodeSingularStringField(value: &self._body) - case 2: try decoder.decodeRepeatedMessageField(value: &self.attachments) - case 3: try decoder.decodeSingularMessageField(value: &self._group) - case 4: try decoder.decodeSingularUInt32Field(value: &self._flags) - case 5: try decoder.decodeSingularUInt32Field(value: &self._expireTimer) - case 6: try decoder.decodeSingularBytesField(value: &self._profileKey) - case 7: try decoder.decodeSingularUInt64Field(value: &self._timestamp) - case 8: try decoder.decodeSingularMessageField(value: &self._quote) - case 9: try decoder.decodeRepeatedMessageField(value: &self.contact) - case 10: try decoder.decodeRepeatedMessageField(value: &self.preview) - case 101: try decoder.decodeSingularMessageField(value: &self._profile) - case 104: try decoder.decodeSingularMessageField(value: &self._closedGroupControlMessage) - case 105: try decoder.decodeSingularStringField(value: &self._syncTarget) - default: break + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &_storage._body) + case 2: try decoder.decodeRepeatedMessageField(value: &_storage._attachments) + case 3: try decoder.decodeSingularMessageField(value: &_storage._group) + case 4: try decoder.decodeSingularUInt32Field(value: &_storage._flags) + case 5: try decoder.decodeSingularUInt32Field(value: &_storage._expireTimer) + case 6: try decoder.decodeSingularBytesField(value: &_storage._profileKey) + case 7: try decoder.decodeSingularUInt64Field(value: &_storage._timestamp) + case 8: try decoder.decodeSingularMessageField(value: &_storage._quote) + case 10: try decoder.decodeRepeatedMessageField(value: &_storage._preview) + case 101: try decoder.decodeSingularMessageField(value: &_storage._profile) + case 104: try decoder.decodeSingularMessageField(value: &_storage._closedGroupControlMessage) + case 105: try decoder.decodeSingularStringField(value: &_storage._syncTarget) + default: break + } } } } func traverse(visitor: inout V) throws { - if let v = self._body { - try visitor.visitSingularStringField(value: v, fieldNumber: 1) - } - if !self.attachments.isEmpty { - try visitor.visitRepeatedMessageField(value: self.attachments, fieldNumber: 2) - } - if let v = self._group { - try visitor.visitSingularMessageField(value: v, fieldNumber: 3) - } - if let v = self._flags { - try visitor.visitSingularUInt32Field(value: v, fieldNumber: 4) - } - if let v = self._expireTimer { - try visitor.visitSingularUInt32Field(value: v, fieldNumber: 5) - } - if let v = self._profileKey { - try visitor.visitSingularBytesField(value: v, fieldNumber: 6) - } - if let v = self._timestamp { - try visitor.visitSingularUInt64Field(value: v, fieldNumber: 7) - } - if let v = self._quote { - try visitor.visitSingularMessageField(value: v, fieldNumber: 8) - } - if !self.contact.isEmpty { - try visitor.visitRepeatedMessageField(value: self.contact, fieldNumber: 9) - } - if !self.preview.isEmpty { - try visitor.visitRepeatedMessageField(value: self.preview, fieldNumber: 10) - } - if let v = self._profile { - try visitor.visitSingularMessageField(value: v, fieldNumber: 101) - } - if let v = self._closedGroupControlMessage { - try visitor.visitSingularMessageField(value: v, fieldNumber: 104) - } - if let v = self._syncTarget { - try visitor.visitSingularStringField(value: v, fieldNumber: 105) + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if let v = _storage._body { + try visitor.visitSingularStringField(value: v, fieldNumber: 1) + } + if !_storage._attachments.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._attachments, fieldNumber: 2) + } + if let v = _storage._group { + try visitor.visitSingularMessageField(value: v, fieldNumber: 3) + } + if let v = _storage._flags { + try visitor.visitSingularUInt32Field(value: v, fieldNumber: 4) + } + if let v = _storage._expireTimer { + try visitor.visitSingularUInt32Field(value: v, fieldNumber: 5) + } + if let v = _storage._profileKey { + try visitor.visitSingularBytesField(value: v, fieldNumber: 6) + } + if let v = _storage._timestamp { + try visitor.visitSingularUInt64Field(value: v, fieldNumber: 7) + } + if let v = _storage._quote { + try visitor.visitSingularMessageField(value: v, fieldNumber: 8) + } + if !_storage._preview.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._preview, fieldNumber: 10) + } + if let v = _storage._profile { + try visitor.visitSingularMessageField(value: v, fieldNumber: 101) + } + if let v = _storage._closedGroupControlMessage { + try visitor.visitSingularMessageField(value: v, fieldNumber: 104) + } + if let v = _storage._syncTarget { + try visitor.visitSingularStringField(value: v, fieldNumber: 105) + } } try unknownFields.traverse(visitor: &visitor) } static func ==(lhs: SessionProtos_DataMessage, rhs: SessionProtos_DataMessage) -> Bool { - if lhs._body != rhs._body {return false} - if lhs.attachments != rhs.attachments {return false} - if lhs._group != rhs._group {return false} - if lhs._flags != rhs._flags {return false} - if lhs._expireTimer != rhs._expireTimer {return false} - if lhs._profileKey != rhs._profileKey {return false} - if lhs._timestamp != rhs._timestamp {return false} - if lhs._quote != rhs._quote {return false} - if lhs.contact != rhs.contact {return false} - if lhs.preview != rhs.preview {return false} - if lhs._profile != rhs._profile {return false} - if lhs._closedGroupControlMessage != rhs._closedGroupControlMessage {return false} - if lhs._syncTarget != rhs._syncTarget {return false} + if lhs._storage !== rhs._storage { + let storagesAreEqual: Bool = withExtendedLifetime((lhs._storage, rhs._storage)) { (_args: (_StorageClass, _StorageClass)) in + let _storage = _args.0 + let rhs_storage = _args.1 + if _storage._body != rhs_storage._body {return false} + if _storage._attachments != rhs_storage._attachments {return false} + if _storage._group != rhs_storage._group {return false} + if _storage._flags != rhs_storage._flags {return false} + if _storage._expireTimer != rhs_storage._expireTimer {return false} + if _storage._profileKey != rhs_storage._profileKey {return false} + if _storage._timestamp != rhs_storage._timestamp {return false} + if _storage._quote != rhs_storage._quote {return false} + if _storage._preview != rhs_storage._preview {return false} + if _storage._profile != rhs_storage._profile {return false} + if _storage._closedGroupControlMessage != rhs_storage._closedGroupControlMessage {return false} + if _storage._syncTarget != rhs_storage._syncTarget {return false} + return true + } + if !storagesAreEqual {return false} + } if lhs.unknownFields != rhs.unknownFields {return false} return true } @@ -2201,6 +1662,13 @@ extension SessionProtos_DataMessage.Quote: SwiftProtobuf.Message, SwiftProtobuf. 4: .same(proto: "attachments"), ] + public var isInitialized: Bool { + if self._id == nil {return false} + if self._author == nil {return false} + if !SwiftProtobuf.Internal.areAllInitialized(self.attachments) {return false} + return true + } + mutating func decodeMessage(decoder: inout D) throws { while let fieldNumber = try decoder.nextFieldNumber() { switch fieldNumber { @@ -2221,415 +1689,122 @@ extension SessionProtos_DataMessage.Quote: SwiftProtobuf.Message, SwiftProtobuf. try visitor.visitSingularStringField(value: v, fieldNumber: 2) } if let v = self._text { - try visitor.visitSingularStringField(value: v, fieldNumber: 3) - } - if !self.attachments.isEmpty { - try visitor.visitRepeatedMessageField(value: self.attachments, fieldNumber: 4) - } - try unknownFields.traverse(visitor: &visitor) - } - - static func ==(lhs: SessionProtos_DataMessage.Quote, rhs: SessionProtos_DataMessage.Quote) -> Bool { - if lhs._id != rhs._id {return false} - if lhs._author != rhs._author {return false} - if lhs._text != rhs._text {return false} - if lhs.attachments != rhs.attachments {return false} - if lhs.unknownFields != rhs.unknownFields {return false} - return true - } -} - -extension SessionProtos_DataMessage.Quote.QuotedAttachment: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { - static let protoMessageName: String = SessionProtos_DataMessage.Quote.protoMessageName + ".QuotedAttachment" - static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ - 1: .same(proto: "contentType"), - 2: .same(proto: "fileName"), - 3: .same(proto: "thumbnail"), - 4: .same(proto: "flags"), - ] - - mutating func decodeMessage(decoder: inout D) throws { - while let fieldNumber = try decoder.nextFieldNumber() { - switch fieldNumber { - case 1: try decoder.decodeSingularStringField(value: &self._contentType) - case 2: try decoder.decodeSingularStringField(value: &self._fileName) - case 3: try decoder.decodeSingularMessageField(value: &self._thumbnail) - case 4: try decoder.decodeSingularUInt32Field(value: &self._flags) - default: break - } - } - } - - func traverse(visitor: inout V) throws { - if let v = self._contentType { - try visitor.visitSingularStringField(value: v, fieldNumber: 1) - } - if let v = self._fileName { - try visitor.visitSingularStringField(value: v, fieldNumber: 2) - } - if let v = self._thumbnail { - try visitor.visitSingularMessageField(value: v, fieldNumber: 3) - } - if let v = self._flags { - try visitor.visitSingularUInt32Field(value: v, fieldNumber: 4) - } - try unknownFields.traverse(visitor: &visitor) - } - - static func ==(lhs: SessionProtos_DataMessage.Quote.QuotedAttachment, rhs: SessionProtos_DataMessage.Quote.QuotedAttachment) -> Bool { - if lhs._contentType != rhs._contentType {return false} - if lhs._fileName != rhs._fileName {return false} - if lhs._thumbnail != rhs._thumbnail {return false} - if lhs._flags != rhs._flags {return false} - if lhs.unknownFields != rhs.unknownFields {return false} - return true - } -} - -extension SessionProtos_DataMessage.Quote.QuotedAttachment.Flags: SwiftProtobuf._ProtoNameProviding { - static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ - 1: .same(proto: "VOICE_MESSAGE"), - ] -} - -extension SessionProtos_DataMessage.Contact: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { - static let protoMessageName: String = SessionProtos_DataMessage.protoMessageName + ".Contact" - static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ - 1: .same(proto: "name"), - 3: .same(proto: "number"), - 4: .same(proto: "email"), - 5: .same(proto: "address"), - 6: .same(proto: "avatar"), - 7: .same(proto: "organization"), - ] - - mutating func decodeMessage(decoder: inout D) throws { - while let fieldNumber = try decoder.nextFieldNumber() { - switch fieldNumber { - case 1: try decoder.decodeSingularMessageField(value: &self._name) - case 3: try decoder.decodeRepeatedMessageField(value: &self.number) - case 4: try decoder.decodeRepeatedMessageField(value: &self.email) - case 5: try decoder.decodeRepeatedMessageField(value: &self.address) - case 6: try decoder.decodeSingularMessageField(value: &self._avatar) - case 7: try decoder.decodeSingularStringField(value: &self._organization) - default: break - } - } - } - - func traverse(visitor: inout V) throws { - if let v = self._name { - try visitor.visitSingularMessageField(value: v, fieldNumber: 1) - } - if !self.number.isEmpty { - try visitor.visitRepeatedMessageField(value: self.number, fieldNumber: 3) - } - if !self.email.isEmpty { - try visitor.visitRepeatedMessageField(value: self.email, fieldNumber: 4) - } - if !self.address.isEmpty { - try visitor.visitRepeatedMessageField(value: self.address, fieldNumber: 5) - } - if let v = self._avatar { - try visitor.visitSingularMessageField(value: v, fieldNumber: 6) - } - if let v = self._organization { - try visitor.visitSingularStringField(value: v, fieldNumber: 7) - } - try unknownFields.traverse(visitor: &visitor) - } - - static func ==(lhs: SessionProtos_DataMessage.Contact, rhs: SessionProtos_DataMessage.Contact) -> Bool { - if lhs._name != rhs._name {return false} - if lhs.number != rhs.number {return false} - if lhs.email != rhs.email {return false} - if lhs.address != rhs.address {return false} - if lhs._avatar != rhs._avatar {return false} - if lhs._organization != rhs._organization {return false} - if lhs.unknownFields != rhs.unknownFields {return false} - return true - } -} - -extension SessionProtos_DataMessage.Contact.Name: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { - static let protoMessageName: String = SessionProtos_DataMessage.Contact.protoMessageName + ".Name" - static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ - 1: .same(proto: "givenName"), - 2: .same(proto: "familyName"), - 3: .same(proto: "prefix"), - 4: .same(proto: "suffix"), - 5: .same(proto: "middleName"), - 6: .same(proto: "displayName"), - ] - - mutating func decodeMessage(decoder: inout D) throws { - while let fieldNumber = try decoder.nextFieldNumber() { - switch fieldNumber { - case 1: try decoder.decodeSingularStringField(value: &self._givenName) - case 2: try decoder.decodeSingularStringField(value: &self._familyName) - case 3: try decoder.decodeSingularStringField(value: &self._prefix) - case 4: try decoder.decodeSingularStringField(value: &self._suffix) - case 5: try decoder.decodeSingularStringField(value: &self._middleName) - case 6: try decoder.decodeSingularStringField(value: &self._displayName) - default: break - } - } - } - - func traverse(visitor: inout V) throws { - if let v = self._givenName { - try visitor.visitSingularStringField(value: v, fieldNumber: 1) - } - if let v = self._familyName { - try visitor.visitSingularStringField(value: v, fieldNumber: 2) - } - if let v = self._prefix { - try visitor.visitSingularStringField(value: v, fieldNumber: 3) - } - if let v = self._suffix { - try visitor.visitSingularStringField(value: v, fieldNumber: 4) - } - if let v = self._middleName { - try visitor.visitSingularStringField(value: v, fieldNumber: 5) - } - if let v = self._displayName { - try visitor.visitSingularStringField(value: v, fieldNumber: 6) - } - try unknownFields.traverse(visitor: &visitor) - } - - static func ==(lhs: SessionProtos_DataMessage.Contact.Name, rhs: SessionProtos_DataMessage.Contact.Name) -> Bool { - if lhs._givenName != rhs._givenName {return false} - if lhs._familyName != rhs._familyName {return false} - if lhs._prefix != rhs._prefix {return false} - if lhs._suffix != rhs._suffix {return false} - if lhs._middleName != rhs._middleName {return false} - if lhs._displayName != rhs._displayName {return false} - if lhs.unknownFields != rhs.unknownFields {return false} - return true - } -} - -extension SessionProtos_DataMessage.Contact.Phone: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { - static let protoMessageName: String = SessionProtos_DataMessage.Contact.protoMessageName + ".Phone" - static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ - 1: .same(proto: "value"), - 2: .same(proto: "type"), - 3: .same(proto: "label"), - ] - - mutating func decodeMessage(decoder: inout D) throws { - while let fieldNumber = try decoder.nextFieldNumber() { - switch fieldNumber { - case 1: try decoder.decodeSingularStringField(value: &self._value) - case 2: try decoder.decodeSingularEnumField(value: &self._type) - case 3: try decoder.decodeSingularStringField(value: &self._label) - default: break - } - } - } - - func traverse(visitor: inout V) throws { - if let v = self._value { - try visitor.visitSingularStringField(value: v, fieldNumber: 1) - } - if let v = self._type { - try visitor.visitSingularEnumField(value: v, fieldNumber: 2) - } - if let v = self._label { - try visitor.visitSingularStringField(value: v, fieldNumber: 3) - } - try unknownFields.traverse(visitor: &visitor) - } - - static func ==(lhs: SessionProtos_DataMessage.Contact.Phone, rhs: SessionProtos_DataMessage.Contact.Phone) -> Bool { - if lhs._value != rhs._value {return false} - if lhs._type != rhs._type {return false} - if lhs._label != rhs._label {return false} - if lhs.unknownFields != rhs.unknownFields {return false} - return true - } -} - -extension SessionProtos_DataMessage.Contact.Phone.TypeEnum: SwiftProtobuf._ProtoNameProviding { - static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ - 1: .same(proto: "HOME"), - 2: .same(proto: "MOBILE"), - 3: .same(proto: "WORK"), - 4: .same(proto: "CUSTOM"), - ] -} - -extension SessionProtos_DataMessage.Contact.Email: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { - static let protoMessageName: String = SessionProtos_DataMessage.Contact.protoMessageName + ".Email" - static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ - 1: .same(proto: "value"), - 2: .same(proto: "type"), - 3: .same(proto: "label"), - ] - - mutating func decodeMessage(decoder: inout D) throws { - while let fieldNumber = try decoder.nextFieldNumber() { - switch fieldNumber { - case 1: try decoder.decodeSingularStringField(value: &self._value) - case 2: try decoder.decodeSingularEnumField(value: &self._type) - case 3: try decoder.decodeSingularStringField(value: &self._label) - default: break - } - } - } - - func traverse(visitor: inout V) throws { - if let v = self._value { - try visitor.visitSingularStringField(value: v, fieldNumber: 1) - } - if let v = self._type { - try visitor.visitSingularEnumField(value: v, fieldNumber: 2) - } - if let v = self._label { - try visitor.visitSingularStringField(value: v, fieldNumber: 3) - } - try unknownFields.traverse(visitor: &visitor) - } - - static func ==(lhs: SessionProtos_DataMessage.Contact.Email, rhs: SessionProtos_DataMessage.Contact.Email) -> Bool { - if lhs._value != rhs._value {return false} - if lhs._type != rhs._type {return false} - if lhs._label != rhs._label {return false} - if lhs.unknownFields != rhs.unknownFields {return false} - return true - } -} - -extension SessionProtos_DataMessage.Contact.Email.TypeEnum: SwiftProtobuf._ProtoNameProviding { - static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ - 1: .same(proto: "HOME"), - 2: .same(proto: "MOBILE"), - 3: .same(proto: "WORK"), - 4: .same(proto: "CUSTOM"), - ] -} - -extension SessionProtos_DataMessage.Contact.PostalAddress: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { - static let protoMessageName: String = SessionProtos_DataMessage.Contact.protoMessageName + ".PostalAddress" - static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ - 1: .same(proto: "type"), - 2: .same(proto: "label"), - 3: .same(proto: "street"), - 4: .same(proto: "pobox"), - 5: .same(proto: "neighborhood"), - 6: .same(proto: "city"), - 7: .same(proto: "region"), - 8: .same(proto: "postcode"), - 9: .same(proto: "country"), - ] - - mutating func decodeMessage(decoder: inout D) throws { - while let fieldNumber = try decoder.nextFieldNumber() { - switch fieldNumber { - case 1: try decoder.decodeSingularEnumField(value: &self._type) - case 2: try decoder.decodeSingularStringField(value: &self._label) - case 3: try decoder.decodeSingularStringField(value: &self._street) - case 4: try decoder.decodeSingularStringField(value: &self._pobox) - case 5: try decoder.decodeSingularStringField(value: &self._neighborhood) - case 6: try decoder.decodeSingularStringField(value: &self._city) - case 7: try decoder.decodeSingularStringField(value: &self._region) - case 8: try decoder.decodeSingularStringField(value: &self._postcode) - case 9: try decoder.decodeSingularStringField(value: &self._country) - default: break - } - } - } - - func traverse(visitor: inout V) throws { - if let v = self._type { - try visitor.visitSingularEnumField(value: v, fieldNumber: 1) - } - if let v = self._label { - try visitor.visitSingularStringField(value: v, fieldNumber: 2) - } - if let v = self._street { - try visitor.visitSingularStringField(value: v, fieldNumber: 3) - } - if let v = self._pobox { - try visitor.visitSingularStringField(value: v, fieldNumber: 4) - } - if let v = self._neighborhood { - try visitor.visitSingularStringField(value: v, fieldNumber: 5) - } - if let v = self._city { - try visitor.visitSingularStringField(value: v, fieldNumber: 6) - } - if let v = self._region { - try visitor.visitSingularStringField(value: v, fieldNumber: 7) - } - if let v = self._postcode { - try visitor.visitSingularStringField(value: v, fieldNumber: 8) + try visitor.visitSingularStringField(value: v, fieldNumber: 3) } - if let v = self._country { - try visitor.visitSingularStringField(value: v, fieldNumber: 9) + if !self.attachments.isEmpty { + try visitor.visitRepeatedMessageField(value: self.attachments, fieldNumber: 4) } try unknownFields.traverse(visitor: &visitor) } - static func ==(lhs: SessionProtos_DataMessage.Contact.PostalAddress, rhs: SessionProtos_DataMessage.Contact.PostalAddress) -> Bool { - if lhs._type != rhs._type {return false} - if lhs._label != rhs._label {return false} - if lhs._street != rhs._street {return false} - if lhs._pobox != rhs._pobox {return false} - if lhs._neighborhood != rhs._neighborhood {return false} - if lhs._city != rhs._city {return false} - if lhs._region != rhs._region {return false} - if lhs._postcode != rhs._postcode {return false} - if lhs._country != rhs._country {return false} + static func ==(lhs: SessionProtos_DataMessage.Quote, rhs: SessionProtos_DataMessage.Quote) -> Bool { + if lhs._id != rhs._id {return false} + if lhs._author != rhs._author {return false} + if lhs._text != rhs._text {return false} + if lhs.attachments != rhs.attachments {return false} if lhs.unknownFields != rhs.unknownFields {return false} return true } } -extension SessionProtos_DataMessage.Contact.PostalAddress.TypeEnum: SwiftProtobuf._ProtoNameProviding { +extension SessionProtos_DataMessage.Quote.QuotedAttachment: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = SessionProtos_DataMessage.Quote.protoMessageName + ".QuotedAttachment" static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ - 1: .same(proto: "HOME"), - 2: .same(proto: "WORK"), - 3: .same(proto: "CUSTOM"), + 1: .same(proto: "contentType"), + 2: .same(proto: "fileName"), + 3: .same(proto: "thumbnail"), + 4: .same(proto: "flags"), ] -} -extension SessionProtos_DataMessage.Contact.Avatar: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { - static let protoMessageName: String = SessionProtos_DataMessage.Contact.protoMessageName + ".Avatar" - static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ - 1: .same(proto: "avatar"), - 2: .same(proto: "isProfile"), - ] + fileprivate class _StorageClass { + var _contentType: String? = nil + var _fileName: String? = nil + var _thumbnail: SessionProtos_AttachmentPointer? = nil + var _flags: UInt32? = nil + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _contentType = source._contentType + _fileName = source._fileName + _thumbnail = source._thumbnail + _flags = source._flags + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + public var isInitialized: Bool { + return withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if let v = _storage._thumbnail, !v.isInitialized {return false} + return true + } + } mutating func decodeMessage(decoder: inout D) throws { - while let fieldNumber = try decoder.nextFieldNumber() { - switch fieldNumber { - case 1: try decoder.decodeSingularMessageField(value: &self._avatar) - case 2: try decoder.decodeSingularBoolField(value: &self._isProfile) - default: break + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &_storage._contentType) + case 2: try decoder.decodeSingularStringField(value: &_storage._fileName) + case 3: try decoder.decodeSingularMessageField(value: &_storage._thumbnail) + case 4: try decoder.decodeSingularUInt32Field(value: &_storage._flags) + default: break + } } } } func traverse(visitor: inout V) throws { - if let v = self._avatar { - try visitor.visitSingularMessageField(value: v, fieldNumber: 1) - } - if let v = self._isProfile { - try visitor.visitSingularBoolField(value: v, fieldNumber: 2) + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if let v = _storage._contentType { + try visitor.visitSingularStringField(value: v, fieldNumber: 1) + } + if let v = _storage._fileName { + try visitor.visitSingularStringField(value: v, fieldNumber: 2) + } + if let v = _storage._thumbnail { + try visitor.visitSingularMessageField(value: v, fieldNumber: 3) + } + if let v = _storage._flags { + try visitor.visitSingularUInt32Field(value: v, fieldNumber: 4) + } } try unknownFields.traverse(visitor: &visitor) } - static func ==(lhs: SessionProtos_DataMessage.Contact.Avatar, rhs: SessionProtos_DataMessage.Contact.Avatar) -> Bool { - if lhs._avatar != rhs._avatar {return false} - if lhs._isProfile != rhs._isProfile {return false} + static func ==(lhs: SessionProtos_DataMessage.Quote.QuotedAttachment, rhs: SessionProtos_DataMessage.Quote.QuotedAttachment) -> Bool { + if lhs._storage !== rhs._storage { + let storagesAreEqual: Bool = withExtendedLifetime((lhs._storage, rhs._storage)) { (_args: (_StorageClass, _StorageClass)) in + let _storage = _args.0 + let rhs_storage = _args.1 + if _storage._contentType != rhs_storage._contentType {return false} + if _storage._fileName != rhs_storage._fileName {return false} + if _storage._thumbnail != rhs_storage._thumbnail {return false} + if _storage._flags != rhs_storage._flags {return false} + return true + } + if !storagesAreEqual {return false} + } if lhs.unknownFields != rhs.unknownFields {return false} return true } } +extension SessionProtos_DataMessage.Quote.QuotedAttachment.Flags: SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "VOICE_MESSAGE"), + ] +} + extension SessionProtos_DataMessage.Preview: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { static let protoMessageName: String = SessionProtos_DataMessage.protoMessageName + ".Preview" static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ @@ -2638,34 +1813,78 @@ extension SessionProtos_DataMessage.Preview: SwiftProtobuf.Message, SwiftProtobu 3: .same(proto: "image"), ] + fileprivate class _StorageClass { + var _url: String? = nil + var _title: String? = nil + var _image: SessionProtos_AttachmentPointer? = nil + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _url = source._url + _title = source._title + _image = source._image + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + + public var isInitialized: Bool { + return withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if _storage._url == nil {return false} + if let v = _storage._image, !v.isInitialized {return false} + return true + } + } + mutating func decodeMessage(decoder: inout D) throws { - while let fieldNumber = try decoder.nextFieldNumber() { - switch fieldNumber { - case 1: try decoder.decodeSingularStringField(value: &self._url) - case 2: try decoder.decodeSingularStringField(value: &self._title) - case 3: try decoder.decodeSingularMessageField(value: &self._image) - default: break + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularStringField(value: &_storage._url) + case 2: try decoder.decodeSingularStringField(value: &_storage._title) + case 3: try decoder.decodeSingularMessageField(value: &_storage._image) + default: break + } } } } func traverse(visitor: inout V) throws { - if let v = self._url { - try visitor.visitSingularStringField(value: v, fieldNumber: 1) - } - if let v = self._title { - try visitor.visitSingularStringField(value: v, fieldNumber: 2) - } - if let v = self._image { - try visitor.visitSingularMessageField(value: v, fieldNumber: 3) + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if let v = _storage._url { + try visitor.visitSingularStringField(value: v, fieldNumber: 1) + } + if let v = _storage._title { + try visitor.visitSingularStringField(value: v, fieldNumber: 2) + } + if let v = _storage._image { + try visitor.visitSingularMessageField(value: v, fieldNumber: 3) + } } try unknownFields.traverse(visitor: &visitor) } static func ==(lhs: SessionProtos_DataMessage.Preview, rhs: SessionProtos_DataMessage.Preview) -> Bool { - if lhs._url != rhs._url {return false} - if lhs._title != rhs._title {return false} - if lhs._image != rhs._image {return false} + if lhs._storage !== rhs._storage { + let storagesAreEqual: Bool = withExtendedLifetime((lhs._storage, rhs._storage)) { (_args: (_StorageClass, _StorageClass)) in + let _storage = _args.0 + let rhs_storage = _args.1 + if _storage._url != rhs_storage._url {return false} + if _storage._title != rhs_storage._title {return false} + if _storage._image != rhs_storage._image {return false} + return true + } + if !storagesAreEqual {return false} + } if lhs.unknownFields != rhs.unknownFields {return false} return true } @@ -2718,61 +1937,107 @@ extension SessionProtos_DataMessage.ClosedGroupControlMessage: SwiftProtobuf.Mes 7: .same(proto: "wrappers"), ] + fileprivate class _StorageClass { + var _type: SessionProtos_DataMessage.ClosedGroupControlMessage.TypeEnum? = nil + var _publicKey: Data? = nil + var _name: String? = nil + var _encryptionKeyPair: SessionProtos_KeyPair? = nil + var _members: [Data] = [] + var _admins: [Data] = [] + var _wrappers: [SessionProtos_DataMessage.ClosedGroupControlMessage.KeyPairWrapper] = [] + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _type = source._type + _publicKey = source._publicKey + _name = source._name + _encryptionKeyPair = source._encryptionKeyPair + _members = source._members + _admins = source._admins + _wrappers = source._wrappers + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + public var isInitialized: Bool { - if self._type == nil {return false} - if let v = self._encryptionKeyPair, !v.isInitialized {return false} - if !SwiftProtobuf.Internal.areAllInitialized(self.wrappers) {return false} - return true + return withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if _storage._type == nil {return false} + if let v = _storage._encryptionKeyPair, !v.isInitialized {return false} + if !SwiftProtobuf.Internal.areAllInitialized(_storage._wrappers) {return false} + return true + } } mutating func decodeMessage(decoder: inout D) throws { - while let fieldNumber = try decoder.nextFieldNumber() { - switch fieldNumber { - case 1: try decoder.decodeSingularEnumField(value: &self._type) - case 2: try decoder.decodeSingularBytesField(value: &self._publicKey) - case 3: try decoder.decodeSingularStringField(value: &self._name) - case 4: try decoder.decodeSingularMessageField(value: &self._encryptionKeyPair) - case 5: try decoder.decodeRepeatedBytesField(value: &self.members) - case 6: try decoder.decodeRepeatedBytesField(value: &self.admins) - case 7: try decoder.decodeRepeatedMessageField(value: &self.wrappers) - default: break + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularEnumField(value: &_storage._type) + case 2: try decoder.decodeSingularBytesField(value: &_storage._publicKey) + case 3: try decoder.decodeSingularStringField(value: &_storage._name) + case 4: try decoder.decodeSingularMessageField(value: &_storage._encryptionKeyPair) + case 5: try decoder.decodeRepeatedBytesField(value: &_storage._members) + case 6: try decoder.decodeRepeatedBytesField(value: &_storage._admins) + case 7: try decoder.decodeRepeatedMessageField(value: &_storage._wrappers) + default: break + } } } } func traverse(visitor: inout V) throws { - if let v = self._type { - try visitor.visitSingularEnumField(value: v, fieldNumber: 1) - } - if let v = self._publicKey { - try visitor.visitSingularBytesField(value: v, fieldNumber: 2) - } - if let v = self._name { - try visitor.visitSingularStringField(value: v, fieldNumber: 3) - } - if let v = self._encryptionKeyPair { - try visitor.visitSingularMessageField(value: v, fieldNumber: 4) - } - if !self.members.isEmpty { - try visitor.visitRepeatedBytesField(value: self.members, fieldNumber: 5) - } - if !self.admins.isEmpty { - try visitor.visitRepeatedBytesField(value: self.admins, fieldNumber: 6) - } - if !self.wrappers.isEmpty { - try visitor.visitRepeatedMessageField(value: self.wrappers, fieldNumber: 7) + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if let v = _storage._type { + try visitor.visitSingularEnumField(value: v, fieldNumber: 1) + } + if let v = _storage._publicKey { + try visitor.visitSingularBytesField(value: v, fieldNumber: 2) + } + if let v = _storage._name { + try visitor.visitSingularStringField(value: v, fieldNumber: 3) + } + if let v = _storage._encryptionKeyPair { + try visitor.visitSingularMessageField(value: v, fieldNumber: 4) + } + if !_storage._members.isEmpty { + try visitor.visitRepeatedBytesField(value: _storage._members, fieldNumber: 5) + } + if !_storage._admins.isEmpty { + try visitor.visitRepeatedBytesField(value: _storage._admins, fieldNumber: 6) + } + if !_storage._wrappers.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._wrappers, fieldNumber: 7) + } } try unknownFields.traverse(visitor: &visitor) } static func ==(lhs: SessionProtos_DataMessage.ClosedGroupControlMessage, rhs: SessionProtos_DataMessage.ClosedGroupControlMessage) -> Bool { - if lhs._type != rhs._type {return false} - if lhs._publicKey != rhs._publicKey {return false} - if lhs._name != rhs._name {return false} - if lhs._encryptionKeyPair != rhs._encryptionKeyPair {return false} - if lhs.members != rhs.members {return false} - if lhs.admins != rhs.admins {return false} - if lhs.wrappers != rhs.wrappers {return false} + if lhs._storage !== rhs._storage { + let storagesAreEqual: Bool = withExtendedLifetime((lhs._storage, rhs._storage)) { (_args: (_StorageClass, _StorageClass)) in + let _storage = _args.0 + let rhs_storage = _args.1 + if _storage._type != rhs_storage._type {return false} + if _storage._publicKey != rhs_storage._publicKey {return false} + if _storage._name != rhs_storage._name {return false} + if _storage._encryptionKeyPair != rhs_storage._encryptionKeyPair {return false} + if _storage._members != rhs_storage._members {return false} + if _storage._admins != rhs_storage._admins {return false} + if _storage._wrappers != rhs_storage._wrappers {return false} + return true + } + if !storagesAreEqual {return false} + } if lhs.unknownFields != rhs.unknownFields {return false} return true } @@ -2781,7 +2046,6 @@ extension SessionProtos_DataMessage.ClosedGroupControlMessage: SwiftProtobuf.Mes extension SessionProtos_DataMessage.ClosedGroupControlMessage.TypeEnum: SwiftProtobuf._ProtoNameProviding { static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ 1: .same(proto: "NEW"), - 2: .same(proto: "UPDATE"), 3: .same(proto: "ENCRYPTION_KEY_PAIR"), 4: .same(proto: "NAME_CHANGE"), 5: .same(proto: "MEMBERS_ADDED"), @@ -2907,49 +2171,91 @@ extension SessionProtos_ConfigurationMessage.ClosedGroup: SwiftProtobuf.Message, 5: .same(proto: "admins"), ] + fileprivate class _StorageClass { + var _publicKey: Data? = nil + var _name: String? = nil + var _encryptionKeyPair: SessionProtos_KeyPair? = nil + var _members: [Data] = [] + var _admins: [Data] = [] + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _publicKey = source._publicKey + _name = source._name + _encryptionKeyPair = source._encryptionKeyPair + _members = source._members + _admins = source._admins + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + public var isInitialized: Bool { - if let v = self._encryptionKeyPair, !v.isInitialized {return false} - return true + return withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if let v = _storage._encryptionKeyPair, !v.isInitialized {return false} + return true + } } mutating func decodeMessage(decoder: inout D) throws { - while let fieldNumber = try decoder.nextFieldNumber() { - switch fieldNumber { - case 1: try decoder.decodeSingularBytesField(value: &self._publicKey) - case 2: try decoder.decodeSingularStringField(value: &self._name) - case 3: try decoder.decodeSingularMessageField(value: &self._encryptionKeyPair) - case 4: try decoder.decodeRepeatedBytesField(value: &self.members) - case 5: try decoder.decodeRepeatedBytesField(value: &self.admins) - default: break + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularBytesField(value: &_storage._publicKey) + case 2: try decoder.decodeSingularStringField(value: &_storage._name) + case 3: try decoder.decodeSingularMessageField(value: &_storage._encryptionKeyPair) + case 4: try decoder.decodeRepeatedBytesField(value: &_storage._members) + case 5: try decoder.decodeRepeatedBytesField(value: &_storage._admins) + default: break + } } } } func traverse(visitor: inout V) throws { - if let v = self._publicKey { - try visitor.visitSingularBytesField(value: v, fieldNumber: 1) - } - if let v = self._name { - try visitor.visitSingularStringField(value: v, fieldNumber: 2) - } - if let v = self._encryptionKeyPair { - try visitor.visitSingularMessageField(value: v, fieldNumber: 3) - } - if !self.members.isEmpty { - try visitor.visitRepeatedBytesField(value: self.members, fieldNumber: 4) - } - if !self.admins.isEmpty { - try visitor.visitRepeatedBytesField(value: self.admins, fieldNumber: 5) + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if let v = _storage._publicKey { + try visitor.visitSingularBytesField(value: v, fieldNumber: 1) + } + if let v = _storage._name { + try visitor.visitSingularStringField(value: v, fieldNumber: 2) + } + if let v = _storage._encryptionKeyPair { + try visitor.visitSingularMessageField(value: v, fieldNumber: 3) + } + if !_storage._members.isEmpty { + try visitor.visitRepeatedBytesField(value: _storage._members, fieldNumber: 4) + } + if !_storage._admins.isEmpty { + try visitor.visitRepeatedBytesField(value: _storage._admins, fieldNumber: 5) + } } try unknownFields.traverse(visitor: &visitor) } static func ==(lhs: SessionProtos_ConfigurationMessage.ClosedGroup, rhs: SessionProtos_ConfigurationMessage.ClosedGroup) -> Bool { - if lhs._publicKey != rhs._publicKey {return false} - if lhs._name != rhs._name {return false} - if lhs._encryptionKeyPair != rhs._encryptionKeyPair {return false} - if lhs.members != rhs.members {return false} - if lhs.admins != rhs.admins {return false} + if lhs._storage !== rhs._storage { + let storagesAreEqual: Bool = withExtendedLifetime((lhs._storage, rhs._storage)) { (_args: (_StorageClass, _StorageClass)) in + let _storage = _args.0 + let rhs_storage = _args.1 + if _storage._publicKey != rhs_storage._publicKey {return false} + if _storage._name != rhs_storage._name {return false} + if _storage._encryptionKeyPair != rhs_storage._encryptionKeyPair {return false} + if _storage._members != rhs_storage._members {return false} + if _storage._admins != rhs_storage._admins {return false} + return true + } + if !storagesAreEqual {return false} + } if lhs.unknownFields != rhs.unknownFields {return false} return true } @@ -3015,6 +2321,11 @@ extension SessionProtos_ReceiptMessage: SwiftProtobuf.Message, SwiftProtobuf._Me 2: .same(proto: "timestamp"), ] + public var isInitialized: Bool { + if self._type == nil {return false} + return true + } + mutating func decodeMessage(decoder: inout D) throws { while let fieldNumber = try decoder.nextFieldNumber() { switch fieldNumber { @@ -3067,6 +2378,11 @@ extension SessionProtos_AttachmentPointer: SwiftProtobuf.Message, SwiftProtobuf. 101: .same(proto: "url"), ] + public var isInitialized: Bool { + if self._id == nil {return false} + return true + } + mutating func decodeMessage(decoder: inout D) throws { while let fieldNumber = try decoder.nextFieldNumber() { switch fieldNumber { @@ -3151,166 +2467,109 @@ extension SessionProtos_AttachmentPointer.Flags: SwiftProtobuf._ProtoNameProvidi ] } -extension SessionProtos_ContactDetails: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { - static let protoMessageName: String = _protobuf_package + ".ContactDetails" +extension SessionProtos_GroupContext: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = _protobuf_package + ".GroupContext" static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ - 1: .same(proto: "number"), - 2: .same(proto: "name"), - 3: .same(proto: "avatar"), - 4: .same(proto: "color"), - 6: .same(proto: "profileKey"), - 7: .same(proto: "blocked"), - 8: .same(proto: "expireTimer"), - 101: .same(proto: "nickname"), + 1: .same(proto: "id"), + 2: .same(proto: "type"), + 3: .same(proto: "name"), + 4: .same(proto: "members"), + 5: .same(proto: "avatar"), + 6: .same(proto: "admins"), ] - mutating func decodeMessage(decoder: inout D) throws { - while let fieldNumber = try decoder.nextFieldNumber() { - switch fieldNumber { - case 1: try decoder.decodeSingularStringField(value: &self._number) - case 2: try decoder.decodeSingularStringField(value: &self._name) - case 3: try decoder.decodeSingularMessageField(value: &self._avatar) - case 4: try decoder.decodeSingularStringField(value: &self._color) - case 6: try decoder.decodeSingularBytesField(value: &self._profileKey) - case 7: try decoder.decodeSingularBoolField(value: &self._blocked) - case 8: try decoder.decodeSingularUInt32Field(value: &self._expireTimer) - case 101: try decoder.decodeSingularStringField(value: &self._nickname) - default: break - } - } - } - - func traverse(visitor: inout V) throws { - if let v = self._number { - try visitor.visitSingularStringField(value: v, fieldNumber: 1) - } - if let v = self._name { - try visitor.visitSingularStringField(value: v, fieldNumber: 2) - } - if let v = self._avatar { - try visitor.visitSingularMessageField(value: v, fieldNumber: 3) - } - if let v = self._color { - try visitor.visitSingularStringField(value: v, fieldNumber: 4) - } - if let v = self._profileKey { - try visitor.visitSingularBytesField(value: v, fieldNumber: 6) - } - if let v = self._blocked { - try visitor.visitSingularBoolField(value: v, fieldNumber: 7) - } - if let v = self._expireTimer { - try visitor.visitSingularUInt32Field(value: v, fieldNumber: 8) - } - if let v = self._nickname { - try visitor.visitSingularStringField(value: v, fieldNumber: 101) - } - try unknownFields.traverse(visitor: &visitor) - } + fileprivate class _StorageClass { + var _id: Data? = nil + var _type: SessionProtos_GroupContext.TypeEnum? = nil + var _name: String? = nil + var _members: [String] = [] + var _avatar: SessionProtos_AttachmentPointer? = nil + var _admins: [String] = [] - static func ==(lhs: SessionProtos_ContactDetails, rhs: SessionProtos_ContactDetails) -> Bool { - if lhs._number != rhs._number {return false} - if lhs._name != rhs._name {return false} - if lhs._avatar != rhs._avatar {return false} - if lhs._color != rhs._color {return false} - if lhs._profileKey != rhs._profileKey {return false} - if lhs._blocked != rhs._blocked {return false} - if lhs._expireTimer != rhs._expireTimer {return false} - if lhs._nickname != rhs._nickname {return false} - if lhs.unknownFields != rhs.unknownFields {return false} - return true - } -} + static let defaultInstance = _StorageClass() -extension SessionProtos_ContactDetails.Avatar: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { - static let protoMessageName: String = SessionProtos_ContactDetails.protoMessageName + ".Avatar" - static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ - 1: .same(proto: "contentType"), - 2: .same(proto: "length"), - ] + private init() {} - mutating func decodeMessage(decoder: inout D) throws { - while let fieldNumber = try decoder.nextFieldNumber() { - switch fieldNumber { - case 1: try decoder.decodeSingularStringField(value: &self._contentType) - case 2: try decoder.decodeSingularUInt32Field(value: &self._length) - default: break - } + init(copying source: _StorageClass) { + _id = source._id + _type = source._type + _name = source._name + _members = source._members + _avatar = source._avatar + _admins = source._admins } } - func traverse(visitor: inout V) throws { - if let v = self._contentType { - try visitor.visitSingularStringField(value: v, fieldNumber: 1) + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) } - if let v = self._length { - try visitor.visitSingularUInt32Field(value: v, fieldNumber: 2) - } - try unknownFields.traverse(visitor: &visitor) + return _storage } - static func ==(lhs: SessionProtos_ContactDetails.Avatar, rhs: SessionProtos_ContactDetails.Avatar) -> Bool { - if lhs._contentType != rhs._contentType {return false} - if lhs._length != rhs._length {return false} - if lhs.unknownFields != rhs.unknownFields {return false} - return true + public var isInitialized: Bool { + return withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if let v = _storage._avatar, !v.isInitialized {return false} + return true + } } -} - -extension SessionProtos_GroupContext: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { - static let protoMessageName: String = _protobuf_package + ".GroupContext" - static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ - 1: .same(proto: "id"), - 2: .same(proto: "type"), - 3: .same(proto: "name"), - 4: .same(proto: "members"), - 5: .same(proto: "avatar"), - 6: .same(proto: "admins"), - ] mutating func decodeMessage(decoder: inout D) throws { - while let fieldNumber = try decoder.nextFieldNumber() { - switch fieldNumber { - case 1: try decoder.decodeSingularBytesField(value: &self._id) - case 2: try decoder.decodeSingularEnumField(value: &self._type) - case 3: try decoder.decodeSingularStringField(value: &self._name) - case 4: try decoder.decodeRepeatedStringField(value: &self.members) - case 5: try decoder.decodeSingularMessageField(value: &self._avatar) - case 6: try decoder.decodeRepeatedStringField(value: &self.admins) - default: break + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularBytesField(value: &_storage._id) + case 2: try decoder.decodeSingularEnumField(value: &_storage._type) + case 3: try decoder.decodeSingularStringField(value: &_storage._name) + case 4: try decoder.decodeRepeatedStringField(value: &_storage._members) + case 5: try decoder.decodeSingularMessageField(value: &_storage._avatar) + case 6: try decoder.decodeRepeatedStringField(value: &_storage._admins) + default: break + } } } } func traverse(visitor: inout V) throws { - if let v = self._id { - try visitor.visitSingularBytesField(value: v, fieldNumber: 1) - } - if let v = self._type { - try visitor.visitSingularEnumField(value: v, fieldNumber: 2) - } - if let v = self._name { - try visitor.visitSingularStringField(value: v, fieldNumber: 3) - } - if !self.members.isEmpty { - try visitor.visitRepeatedStringField(value: self.members, fieldNumber: 4) - } - if let v = self._avatar { - try visitor.visitSingularMessageField(value: v, fieldNumber: 5) - } - if !self.admins.isEmpty { - try visitor.visitRepeatedStringField(value: self.admins, fieldNumber: 6) + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if let v = _storage._id { + try visitor.visitSingularBytesField(value: v, fieldNumber: 1) + } + if let v = _storage._type { + try visitor.visitSingularEnumField(value: v, fieldNumber: 2) + } + if let v = _storage._name { + try visitor.visitSingularStringField(value: v, fieldNumber: 3) + } + if !_storage._members.isEmpty { + try visitor.visitRepeatedStringField(value: _storage._members, fieldNumber: 4) + } + if let v = _storage._avatar { + try visitor.visitSingularMessageField(value: v, fieldNumber: 5) + } + if !_storage._admins.isEmpty { + try visitor.visitRepeatedStringField(value: _storage._admins, fieldNumber: 6) + } } try unknownFields.traverse(visitor: &visitor) } static func ==(lhs: SessionProtos_GroupContext, rhs: SessionProtos_GroupContext) -> Bool { - if lhs._id != rhs._id {return false} - if lhs._type != rhs._type {return false} - if lhs._name != rhs._name {return false} - if lhs.members != rhs.members {return false} - if lhs._avatar != rhs._avatar {return false} - if lhs.admins != rhs.admins {return false} + if lhs._storage !== rhs._storage { + let storagesAreEqual: Bool = withExtendedLifetime((lhs._storage, rhs._storage)) { (_args: (_StorageClass, _StorageClass)) in + let _storage = _args.0 + let rhs_storage = _args.1 + if _storage._id != rhs_storage._id {return false} + if _storage._type != rhs_storage._type {return false} + if _storage._name != rhs_storage._name {return false} + if _storage._members != rhs_storage._members {return false} + if _storage._avatar != rhs_storage._avatar {return false} + if _storage._admins != rhs_storage._admins {return false} + return true + } + if !storagesAreEqual {return false} + } if lhs.unknownFields != rhs.unknownFields {return false} return true } diff --git a/SessionMessagingKit/Protos/Generated/WebSocketResources.pb.swift b/SessionMessagingKit/Protos/Generated/WebSocketResources.pb.swift index e713065fd..9c483f53f 100644 --- a/SessionMessagingKit/Protos/Generated/WebSocketResources.pb.swift +++ b/SessionMessagingKit/Protos/Generated/WebSocketResources.pb.swift @@ -1,10 +1,9 @@ // DO NOT EDIT. -// swift-format-ignore-file // // Generated by the Swift generator plugin for the protocol buffer compiler. // Source: WebSocketResources.proto // -// For information on using the generated types, please see the documentation: +// For information on using the generated types, please see the documenation: // https://github.com/apple/swift-protobuf/ //* @@ -21,7 +20,7 @@ import SwiftProtobuf // If the compiler emits an error on this type, it is because this file // was generated by a version of the `protoc` Swift plug-in that is // incompatible with the version of SwiftProtobuf to which you are linking. -// Please ensure that you are building against the same version of the API +// Please ensure that your are building against the same version of the API // that was used to generate this file. fileprivate struct _GeneratedWithProtocGenSwiftVersion: SwiftProtobuf.ProtobufAPIVersionCheck { struct _2: SwiftProtobuf.ProtobufAPIVersion_2 {} @@ -146,31 +145,31 @@ struct WebSocketProtos_WebSocketMessage { /// @required var type: WebSocketProtos_WebSocketMessage.TypeEnum { - get {return _type ?? .unknown} - set {_type = newValue} + get {return _storage._type ?? .unknown} + set {_uniqueStorage()._type = newValue} } /// Returns true if `type` has been explicitly set. - var hasType: Bool {return self._type != nil} + var hasType: Bool {return _storage._type != nil} /// Clears the value of `type`. Subsequent reads from it will return its default value. - mutating func clearType() {self._type = nil} + mutating func clearType() {_uniqueStorage()._type = nil} var request: WebSocketProtos_WebSocketRequestMessage { - get {return _request ?? WebSocketProtos_WebSocketRequestMessage()} - set {_request = newValue} + get {return _storage._request ?? WebSocketProtos_WebSocketRequestMessage()} + set {_uniqueStorage()._request = newValue} } /// Returns true if `request` has been explicitly set. - var hasRequest: Bool {return self._request != nil} + var hasRequest: Bool {return _storage._request != nil} /// Clears the value of `request`. Subsequent reads from it will return its default value. - mutating func clearRequest() {self._request = nil} + mutating func clearRequest() {_uniqueStorage()._request = nil} var response: WebSocketProtos_WebSocketResponseMessage { - get {return _response ?? WebSocketProtos_WebSocketResponseMessage()} - set {_response = newValue} + get {return _storage._response ?? WebSocketProtos_WebSocketResponseMessage()} + set {_uniqueStorage()._response = newValue} } /// Returns true if `response` has been explicitly set. - var hasResponse: Bool {return self._response != nil} + var hasResponse: Bool {return _storage._response != nil} /// Clears the value of `response`. Subsequent reads from it will return its default value. - mutating func clearResponse() {self._response = nil} + mutating func clearResponse() {_uniqueStorage()._response = nil} var unknownFields = SwiftProtobuf.UnknownStorage() @@ -205,9 +204,7 @@ struct WebSocketProtos_WebSocketMessage { init() {} - fileprivate var _type: WebSocketProtos_WebSocketMessage.TypeEnum? = nil - fileprivate var _request: WebSocketProtos_WebSocketRequestMessage? = nil - fileprivate var _response: WebSocketProtos_WebSocketResponseMessage? = nil + fileprivate var _storage = _StorageClass.defaultInstance } #if swift(>=4.2) @@ -336,34 +333,70 @@ extension WebSocketProtos_WebSocketMessage: SwiftProtobuf.Message, SwiftProtobuf 3: .same(proto: "response"), ] + fileprivate class _StorageClass { + var _type: WebSocketProtos_WebSocketMessage.TypeEnum? = nil + var _request: WebSocketProtos_WebSocketRequestMessage? = nil + var _response: WebSocketProtos_WebSocketResponseMessage? = nil + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _type = source._type + _request = source._request + _response = source._response + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + mutating func decodeMessage(decoder: inout D) throws { - while let fieldNumber = try decoder.nextFieldNumber() { - switch fieldNumber { - case 1: try decoder.decodeSingularEnumField(value: &self._type) - case 2: try decoder.decodeSingularMessageField(value: &self._request) - case 3: try decoder.decodeSingularMessageField(value: &self._response) - default: break + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + switch fieldNumber { + case 1: try decoder.decodeSingularEnumField(value: &_storage._type) + case 2: try decoder.decodeSingularMessageField(value: &_storage._request) + case 3: try decoder.decodeSingularMessageField(value: &_storage._response) + default: break + } } } } func traverse(visitor: inout V) throws { - if let v = self._type { - try visitor.visitSingularEnumField(value: v, fieldNumber: 1) - } - if let v = self._request { - try visitor.visitSingularMessageField(value: v, fieldNumber: 2) - } - if let v = self._response { - try visitor.visitSingularMessageField(value: v, fieldNumber: 3) + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + if let v = _storage._type { + try visitor.visitSingularEnumField(value: v, fieldNumber: 1) + } + if let v = _storage._request { + try visitor.visitSingularMessageField(value: v, fieldNumber: 2) + } + if let v = _storage._response { + try visitor.visitSingularMessageField(value: v, fieldNumber: 3) + } } try unknownFields.traverse(visitor: &visitor) } static func ==(lhs: WebSocketProtos_WebSocketMessage, rhs: WebSocketProtos_WebSocketMessage) -> Bool { - if lhs._type != rhs._type {return false} - if lhs._request != rhs._request {return false} - if lhs._response != rhs._response {return false} + if lhs._storage !== rhs._storage { + let storagesAreEqual: Bool = withExtendedLifetime((lhs._storage, rhs._storage)) { (_args: (_StorageClass, _StorageClass)) in + let _storage = _args.0 + let rhs_storage = _args.1 + if _storage._type != rhs_storage._type {return false} + if _storage._request != rhs_storage._request {return false} + if _storage._response != rhs_storage._response {return false} + return true + } + if !storagesAreEqual {return false} + } if lhs.unknownFields != rhs.unknownFields {return false} return true } diff --git a/SessionMessagingKit/Protos/SessionProtos.proto b/SessionMessagingKit/Protos/SessionProtos.proto index 2ce67ec2c..8bc315875 100644 --- a/SessionMessagingKit/Protos/SessionProtos.proto +++ b/SessionMessagingKit/Protos/SessionProtos.proto @@ -7,8 +7,8 @@ package SessionProtos; message Envelope { enum Type { - UNIDENTIFIED_SENDER = 6; - CLOSED_GROUP_CIPHERTEXT = 7; + SESSION_MESSAGE = 6; + CLOSED_GROUP_MESSAGE = 7; } // @required @@ -16,7 +16,7 @@ message Envelope { optional string source = 2; optional uint32 sourceDevice = 7; // @required - optional uint64 timestamp = 5; + required uint64 timestamp = 5; optional bytes content = 8; optional uint64 serverTimestamp = 10; } @@ -29,9 +29,9 @@ message TypingMessage { } // @required - optional uint64 timestamp = 1; + required uint64 timestamp = 1; // @required - optional Action action = 2; + required Action action = 2; } message Content { @@ -41,13 +41,6 @@ message Content { optional ConfigurationMessage configurationMessage = 7; } -message ClosedGroupCiphertextMessageWrapper { - // @required - optional bytes ciphertext = 1; - // @required - optional bytes ephemeralPublicKey = 2; -} - message KeyPair { // @required required bytes publicKey = 1; @@ -76,87 +69,16 @@ message DataMessage { } // @required - optional uint64 id = 1; + required uint64 id = 1; // @required - optional string author = 2; + required string author = 2; optional string text = 3; repeated QuotedAttachment attachments = 4; } - message Contact { - - message Name { - optional string givenName = 1; - optional string familyName = 2; - optional string prefix = 3; - optional string suffix = 4; - optional string middleName = 5; - optional string displayName = 6; - } - - message Phone { - - enum Type { - HOME = 1; - MOBILE = 2; - WORK = 3; - CUSTOM = 4; - } - - optional string value = 1; - optional Type type = 2; - optional string label = 3; - } - - message Email { - - enum Type { - HOME = 1; - MOBILE = 2; - WORK = 3; - CUSTOM = 4; - } - - optional string value = 1; - optional Type type = 2; - optional string label = 3; - } - - message PostalAddress { - - enum Type { - HOME = 1; - WORK = 2; - CUSTOM = 3; - } - - optional Type type = 1; - optional string label = 2; - optional string street = 3; - optional string pobox = 4; - optional string neighborhood = 5; - optional string city = 6; - optional string region = 7; - optional string postcode = 8; - optional string country = 9; - } - - message Avatar { - optional AttachmentPointer avatar = 1; - optional bool isProfile = 2; - } - - optional Name name = 1; - repeated Phone number = 3; - repeated Email email = 4; - repeated PostalAddress address = 5; - optional Avatar avatar = 6; - optional string organization = 7; - } - message Preview { // @required - optional string url = 1; + required string url = 1; optional string title = 2; optional AttachmentPointer image = 3; } @@ -170,7 +92,6 @@ message DataMessage { enum Type { NEW = 1; // publicKey, name, encryptionKeyPair, members, admins - UPDATE = 2; // name, members ENCRYPTION_KEY_PAIR = 3; // publicKey, wrappers NAME_CHANGE = 4; // name MEMBERS_ADDED = 5; // members @@ -204,7 +125,6 @@ message DataMessage { optional bytes profileKey = 6; optional uint64 timestamp = 7; optional Quote quote = 8; - repeated Contact contact = 9; repeated Preview preview = 10; optional LokiProfile profile = 101; optional ClosedGroupControlMessage closedGroupControlMessage = 104; @@ -246,7 +166,7 @@ message ReceiptMessage { } // @required - optional Type type = 1; + required Type type = 1; repeated uint64 timestamp = 2; } @@ -257,7 +177,7 @@ message AttachmentPointer { } // @required - optional fixed64 id = 1; + required fixed64 id = 1; optional string contentType = 2; optional bytes key = 3; optional uint32 size = 4; @@ -271,26 +191,6 @@ message AttachmentPointer { optional string url = 101; } -message ContactDetails { - - message Avatar { - optional string contentType = 1; - optional uint32 length = 2; - } - - // @required - optional string number = 1; - optional string name = 2; - optional Avatar avatar = 3; - optional string color = 4; - optional bytes profileKey = 6; - optional bool blocked = 7; - optional uint32 expireTimer = 8; - optional string nickname = 101; -} - -// -------- Deprecated -------- - message GroupContext { enum Type { diff --git a/SessionMessagingKit/Sending & Receiving/MessageReceiver+Handling.swift b/SessionMessagingKit/Sending & Receiving/MessageReceiver+Handling.swift index a31ecea01..eb7e55741 100644 --- a/SessionMessagingKit/Sending & Receiving/MessageReceiver+Handling.swift +++ b/SessionMessagingKit/Sending & Receiving/MessageReceiver+Handling.swift @@ -311,7 +311,6 @@ extension MessageReceiver { private static func handleClosedGroupControlMessage(_ message: ClosedGroupControlMessage, using transaction: Any) { switch message.kind! { case .new: handleNewClosedGroup(message, using: transaction) - case .update: handleClosedGroupUpdated(message, using: transaction) // Deprecated case .encryptionKeyPair: handleClosedGroupEncryptionKeyPair(message, using: transaction) case .nameChange: handleClosedGroupNameChanged(message, using: transaction) case .membersAdded: handleClosedGroupMembersAdded(message, using: transaction) @@ -561,68 +560,4 @@ extension MessageReceiver { // Perform the update update(groupID, thread, group) } - - - - // MARK: - Deprecated - - /// - Note: Deprecated. - private static func handleClosedGroupUpdated(_ message: ClosedGroupControlMessage, using transaction: Any) { - // Prepare - guard case let .update(name, membersAsData) = message.kind else { return } - let transaction = transaction as! YapDatabaseReadWriteTransaction - // Unwrap the message - guard let groupPublicKey = message.groupPublicKey else { return } - let members = membersAsData.map { $0.toHexString() } - // Get the group - let groupID = LKGroupUtilities.getEncodedClosedGroupIDAsData(groupPublicKey) - let threadID = TSGroupThread.threadId(fromGroupId: groupID) - guard let thread = TSGroupThread.fetch(uniqueId: threadID, transaction: transaction) else { - return SNLog("Ignoring closed group update message for nonexistent group.") - } - let group = thread.groupModel - let oldMembers = group.groupMemberIds - // Check that the message isn't from before the group was created - guard Double(message.sentTimestamp!) > thread.creationDate.timeIntervalSince1970 * 1000 else { - return SNLog("Ignoring closed group update from before thread was created.") - } - // Check that the sender is a member of the group (before the update) - guard Set(group.groupMemberIds).contains(message.sender!) else { - return SNLog("Ignoring closed group update message from non-member.") - } - // Check that the admin wasn't removed unless the group was destroyed entirely - if !members.contains(group.groupAdminIds.first!) && !members.isEmpty { - return SNLog("Ignoring invalid closed group update message.") - } - // Remove the group from the user's set of public keys to poll for if the current user was removed - let userPublicKey = getUserHexEncodedPublicKey() - let wasCurrentUserRemoved = !members.contains(userPublicKey) - if wasCurrentUserRemoved { - Storage.shared.removeClosedGroupPublicKey(groupPublicKey, using: transaction) - // Remove the key pairs - Storage.shared.removeAllClosedGroupEncryptionKeyPairs(for: groupPublicKey, using: transaction) - // Notify the PN server - let _ = PushNotificationAPI.performOperation(.unsubscribe, for: groupPublicKey, publicKey: userPublicKey) - } - // Generate and distribute a new encryption key pair if needed - let wasAnyUserRemoved = (Set(members).intersection(oldMembers) != Set(oldMembers)) - let isCurrentUserAdmin = group.groupAdminIds.contains(getUserHexEncodedPublicKey()) - if wasAnyUserRemoved && isCurrentUserAdmin { - do { - try MessageSender.generateAndSendNewEncryptionKeyPair(for: groupPublicKey, to: Set(members), using: transaction) - } catch { - SNLog("Couldn't distribute new encryption key pair.") - } - } - // Update the group - let newGroupModel = TSGroupModel(title: name, memberIds: members, image: nil, groupId: groupID, groupType: .closedGroup, adminIds: group.groupAdminIds) - thread.setGroupModel(newGroupModel, with: transaction) - // Notify the user if needed - if Set(members) != Set(oldMembers) || name != group.groupName { - let infoMessageType: TSInfoMessageType = wasCurrentUserRemoved ? .typeGroupQuit : .typeGroupUpdate - let updateInfo = group.getInfoStringAboutUpdate(to: newGroupModel) - let infoMessage = TSInfoMessage(timestamp: NSDate.ows_millisecondTimeStamp(), in: thread, messageType: infoMessageType, customMessage: updateInfo) - infoMessage.save(with: transaction) - } - } } diff --git a/SessionMessagingKit/Sending & Receiving/MessageReceiver.swift b/SessionMessagingKit/Sending & Receiving/MessageReceiver.swift index db167c791..653f710aa 100644 --- a/SessionMessagingKit/Sending & Receiving/MessageReceiver.swift +++ b/SessionMessagingKit/Sending & Receiving/MessageReceiver.swift @@ -68,10 +68,10 @@ public enum MessageReceiver { (plaintext, sender) = (envelope.content!, envelope.source!) } else { switch envelope.type { - case .unidentifiedSender: + case .sessionMessage: guard let userX25519KeyPair = SNMessagingKitConfiguration.shared.storage.getUserKeyPair() else { throw Error.noUserX25519KeyPair } (plaintext, sender) = try decryptWithSessionProtocol(ciphertext: ciphertext, using: userX25519KeyPair) - case .closedGroupCiphertext: + case .closedGroupMessage: guard let hexEncodedGroupPublicKey = envelope.source, SNMessagingKitConfiguration.shared.storage.isClosedGroup(hexEncodedGroupPublicKey) else { throw Error.invalidGroupPublicKey } var encryptionKeyPairs = Storage.shared.getClosedGroupEncryptionKeyPairs(for: hexEncodedGroupPublicKey) guard !encryptionKeyPairs.isEmpty else { throw Error.noGroupKeyPair } diff --git a/SessionMessagingKit/Sending & Receiving/MessageSender.swift b/SessionMessagingKit/Sending & Receiving/MessageSender.swift index 7b44fe25f..477676bc5 100644 --- a/SessionMessagingKit/Sending & Receiving/MessageSender.swift +++ b/SessionMessagingKit/Sending & Receiving/MessageSender.swift @@ -184,10 +184,10 @@ public final class MessageSender : NSObject { let senderPublicKey: String switch destination { case .contact(_): - kind = .unidentifiedSender + kind = .sessionMessage senderPublicKey = "" case .closedGroup(let groupPublicKey): - kind = .closedGroupCiphertext + kind = .closedGroupMessage senderPublicKey = groupPublicKey case .openGroup(_, _): preconditionFailure() } diff --git a/SessionMessagingKit/Sending & Receiving/Pollers/OpenGroupPoller.swift b/SessionMessagingKit/Sending & Receiving/Pollers/OpenGroupPoller.swift index e1fae6c87..c64a52a65 100644 --- a/SessionMessagingKit/Sending & Receiving/Pollers/OpenGroupPoller.swift +++ b/SessionMessagingKit/Sending & Receiving/Pollers/OpenGroupPoller.swift @@ -147,7 +147,7 @@ public final class OpenGroupPoller : NSObject { let content = SNProtoContent.builder() content.setDataMessage(try! dataMessageProto.build()) // Envelope - let envelope = SNProtoEnvelope.builder(type: .unidentifiedSender, timestamp: message.timestamp) + let envelope = SNProtoEnvelope.builder(type: .sessionMessage, timestamp: message.timestamp) envelope.setSource(senderPublicKey) envelope.setSourceDevice(1) envelope.setContent(try! content.build().serializedData())