Rename ClosedGroupUpdateV2 → ClosedGroupControlMessage
This commit is contained in:
parent
9ea1ccd0c2
commit
c9c83da3dc
|
@ -519,7 +519,7 @@
|
|||
C3471ED42555386B00297E91 /* AESGCM.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3C2A5D72553860B00C340D1 /* AESGCM.swift */; };
|
||||
C3471F4C25553AB000297E91 /* MessageReceiver+Decryption.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3471F4B25553AB000297E91 /* MessageReceiver+Decryption.swift */; };
|
||||
C3471FA42555439E00297E91 /* Notification+MessageSender.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3471FA32555439E00297E91 /* Notification+MessageSender.swift */; };
|
||||
C34A977425A3E34A00852C71 /* ClosedGroupUpdate.swift in Sources */ = {isa = PBXBuildFile; fileRef = C34A977325A3E34A00852C71 /* ClosedGroupUpdate.swift */; };
|
||||
C34A977425A3E34A00852C71 /* ClosedGroupControlMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = C34A977325A3E34A00852C71 /* ClosedGroupControlMessage.swift */; };
|
||||
C34C8F7423A7830B00D82669 /* SpaceMono-Bold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = C34C8F7323A7830A00D82669 /* SpaceMono-Bold.ttf */; };
|
||||
C352A2F525574B4700338F3E /* Job.swift in Sources */ = {isa = PBXBuildFile; fileRef = C352A2F425574B4700338F3E /* Job.swift */; };
|
||||
C352A2FF25574B6300338F3E /* MessageSendJob.swift in Sources */ = {isa = PBXBuildFile; fileRef = C352A2FE25574B6300338F3E /* MessageSendJob.swift */; };
|
||||
|
@ -1518,7 +1518,7 @@
|
|||
C3471ECA2555356A00297E91 /* MessageSender+Encryption.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "MessageSender+Encryption.swift"; sourceTree = "<group>"; };
|
||||
C3471F4B25553AB000297E91 /* MessageReceiver+Decryption.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "MessageReceiver+Decryption.swift"; sourceTree = "<group>"; };
|
||||
C3471FA32555439E00297E91 /* Notification+MessageSender.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Notification+MessageSender.swift"; sourceTree = "<group>"; };
|
||||
C34A977325A3E34A00852C71 /* ClosedGroupUpdate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClosedGroupUpdate.swift; sourceTree = "<group>"; };
|
||||
C34A977325A3E34A00852C71 /* ClosedGroupControlMessage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClosedGroupControlMessage.swift; sourceTree = "<group>"; };
|
||||
C34C8F7323A7830A00D82669 /* SpaceMono-Bold.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "SpaceMono-Bold.ttf"; sourceTree = "<group>"; };
|
||||
C352A2F425574B4700338F3E /* Job.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Job.swift; sourceTree = "<group>"; };
|
||||
C352A2FE25574B6300338F3E /* MessageSendJob.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MessageSendJob.swift; sourceTree = "<group>"; };
|
||||
|
@ -2354,7 +2354,7 @@
|
|||
C3C2A7702553A41E00C340D1 /* ControlMessage.swift */,
|
||||
C300A5BC2554B00D00555489 /* ReadReceipt.swift */,
|
||||
C300A5D22554B05A00555489 /* TypingIndicator.swift */,
|
||||
C34A977325A3E34A00852C71 /* ClosedGroupUpdate.swift */,
|
||||
C34A977325A3E34A00852C71 /* ClosedGroupControlMessage.swift */,
|
||||
C300A5E62554B07300555489 /* ExpirationTimerUpdate.swift */,
|
||||
);
|
||||
path = "Control Messages";
|
||||
|
@ -4912,7 +4912,7 @@
|
|||
C3471FA42555439E00297E91 /* Notification+MessageSender.swift in Sources */,
|
||||
C32C5BEF256DC8EE003C73A2 /* OWSDisappearingMessagesJob.m in Sources */,
|
||||
C3A7222A2558C1E40043A11F /* DotNetAPI.swift in Sources */,
|
||||
C34A977425A3E34A00852C71 /* ClosedGroupUpdate.swift in Sources */,
|
||||
C34A977425A3E34A00852C71 /* ClosedGroupControlMessage.swift in Sources */,
|
||||
C32C5E97256DE0CB003C73A2 /* OWSPrimaryStorage.m in Sources */,
|
||||
C32C5EB9256DE130003C73A2 /* OWSQuotedReplyModel+Conversion.swift in Sources */,
|
||||
C3A71D1F25589AC30043A11F /* WebSocketResources.pb.swift in Sources */,
|
||||
|
|
|
@ -263,9 +263,9 @@ final class EditClosedGroupVC : BaseVC, UITableViewDataSource, UITableViewDelega
|
|||
Storage.write(with: { [weak self] transaction in
|
||||
do {
|
||||
if !members.contains(getUserHexEncodedPublicKey()) {
|
||||
try MessageSender.leaveV2(groupPublicKey, using: transaction)
|
||||
try MessageSender.leave(groupPublicKey, using: transaction)
|
||||
} else {
|
||||
try MessageSender.updateV2(groupPublicKey, with: members, name: name, transaction: transaction)
|
||||
try MessageSender.update(groupPublicKey, with: members, name: name, transaction: transaction)
|
||||
}
|
||||
} catch {
|
||||
DispatchQueue.main.async {
|
||||
|
|
|
@ -171,7 +171,7 @@ final class NewClosedGroupVC : BaseVC, UITableViewDataSource, UITableViewDelegat
|
|||
ModalActivityIndicatorViewController.present(fromViewController: navigationController!, message: message) { [weak self] _ in
|
||||
var promise: Promise<TSGroupThread>!
|
||||
Storage.writeSync { transaction in
|
||||
promise = MessageSender.createV2ClosedGroup(name: name, members: selectedContacts, transaction: transaction)
|
||||
promise = MessageSender.createClosedGroup(name: name, members: selectedContacts, transaction: transaction)
|
||||
}
|
||||
let _ = promise.done(on: DispatchQueue.main) { thread in
|
||||
self?.presentingViewController?.dismiss(animated: true, completion: nil)
|
||||
|
|
|
@ -379,7 +379,7 @@ final class HomeVC : BaseVC, UITableViewDataSource, UITableViewDelegate, UIViewC
|
|||
let groupID = thread.groupModel.groupId
|
||||
let groupPublicKey = LKGroupUtilities.getDecodedGroupID(groupID)
|
||||
do {
|
||||
try MessageSender.leaveV2(groupPublicKey, using: transaction)
|
||||
try MessageSender.leave(groupPublicKey, using: transaction)
|
||||
} catch {
|
||||
// TODO: Handle
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import SessionProtocolKit
|
||||
import SessionUtilitiesKit
|
||||
|
||||
public final class ClosedGroupUpdate : ControlMessage {
|
||||
public final class ClosedGroupControlMessage : ControlMessage {
|
||||
public var kind: Kind?
|
||||
|
||||
public override var ttl: UInt64 {
|
||||
|
@ -58,13 +58,13 @@ public final class ClosedGroupUpdate : ControlMessage {
|
|||
coder.encode(encryptedKeyPair, forKey: "encryptedKeyPair")
|
||||
}
|
||||
|
||||
public static func fromProto(_ proto: SNProtoDataMessageClosedGroupUpdateV2KeyPairWrapper) -> KeyPairWrapper? {
|
||||
public static func fromProto(_ proto: SNProtoDataMessageClosedGroupControlMessageKeyPairWrapper) -> KeyPairWrapper? {
|
||||
return KeyPairWrapper(publicKey: proto.publicKey.toHexString(), encryptedKeyPair: proto.encryptedKeyPair)
|
||||
}
|
||||
|
||||
public func toProto() -> SNProtoDataMessageClosedGroupUpdateV2KeyPairWrapper? {
|
||||
public func toProto() -> SNProtoDataMessageClosedGroupControlMessageKeyPairWrapper? {
|
||||
guard let publicKey = publicKey, let encryptedKeyPair = encryptedKeyPair else { return nil }
|
||||
let result = SNProtoDataMessageClosedGroupUpdateV2KeyPairWrapper.builder(publicKey: Data(hex: publicKey), encryptedKeyPair: encryptedKeyPair)
|
||||
let result = SNProtoDataMessageClosedGroupControlMessageKeyPairWrapper.builder(publicKey: Data(hex: publicKey), encryptedKeyPair: encryptedKeyPair)
|
||||
do {
|
||||
return try result.build()
|
||||
} catch {
|
||||
|
@ -166,38 +166,38 @@ public final class ClosedGroupUpdate : ControlMessage {
|
|||
}
|
||||
|
||||
// MARK: Proto Conversion
|
||||
public override class func fromProto(_ proto: SNProtoContent) -> ClosedGroupUpdate? {
|
||||
guard let closedGroupUpdateProto = proto.dataMessage?.closedGroupUpdateV2 else { return nil }
|
||||
public override class func fromProto(_ proto: SNProtoContent) -> ClosedGroupControlMessage? {
|
||||
guard let closedGroupControlMessageProto = proto.dataMessage?.closedGroupControlMessage else { return nil }
|
||||
let kind: Kind
|
||||
switch closedGroupUpdateProto.type {
|
||||
switch closedGroupControlMessageProto.type {
|
||||
case .new:
|
||||
guard let publicKey = closedGroupUpdateProto.publicKey, let name = closedGroupUpdateProto.name,
|
||||
let encryptionKeyPairAsProto = closedGroupUpdateProto.encryptionKeyPair else { return nil }
|
||||
guard let publicKey = closedGroupControlMessageProto.publicKey, let name = closedGroupControlMessageProto.name,
|
||||
let encryptionKeyPairAsProto = closedGroupControlMessageProto.encryptionKeyPair else { return nil }
|
||||
do {
|
||||
let encryptionKeyPair = try ECKeyPair(publicKeyData: encryptionKeyPairAsProto.publicKey.removing05PrefixIfNeeded(), privateKeyData: encryptionKeyPairAsProto.privateKey)
|
||||
kind = .new(publicKey: publicKey, name: name, encryptionKeyPair: encryptionKeyPair,
|
||||
members: closedGroupUpdateProto.members, admins: closedGroupUpdateProto.admins)
|
||||
members: closedGroupControlMessageProto.members, admins: closedGroupControlMessageProto.admins)
|
||||
} catch {
|
||||
SNLog("Couldn't parse key pair.")
|
||||
return nil
|
||||
}
|
||||
case .update:
|
||||
guard let name = closedGroupUpdateProto.name else { return nil }
|
||||
kind = .update(name: name, members: closedGroupUpdateProto.members)
|
||||
guard let name = closedGroupControlMessageProto.name else { return nil }
|
||||
kind = .update(name: name, members: closedGroupControlMessageProto.members)
|
||||
case .encryptionKeyPair:
|
||||
let wrappers = closedGroupUpdateProto.wrappers.compactMap { KeyPairWrapper.fromProto($0) }
|
||||
let wrappers = closedGroupControlMessageProto.wrappers.compactMap { KeyPairWrapper.fromProto($0) }
|
||||
kind = .encryptionKeyPair(wrappers)
|
||||
case .nameChange:
|
||||
guard let name = closedGroupUpdateProto.name else { return nil }
|
||||
guard let name = closedGroupControlMessageProto.name else { return nil }
|
||||
kind = .nameChange(name: name)
|
||||
case .usersAdded:
|
||||
kind = .usersAdded(members: closedGroupUpdateProto.members)
|
||||
kind = .usersAdded(members: closedGroupControlMessageProto.members)
|
||||
case .usersRemoved:
|
||||
kind = .usersRemoved(members: closedGroupUpdateProto.members)
|
||||
kind = .usersRemoved(members: closedGroupControlMessageProto.members)
|
||||
case .userLeft:
|
||||
kind = .userLeft
|
||||
}
|
||||
return ClosedGroupUpdate(kind: kind)
|
||||
return ClosedGroupControlMessage(kind: kind)
|
||||
}
|
||||
|
||||
public override func toProto(using transaction: YapDatabaseReadWriteTransaction) -> SNProtoContent? {
|
||||
|
@ -206,43 +206,43 @@ public final class ClosedGroupUpdate : ControlMessage {
|
|||
return nil
|
||||
}
|
||||
do {
|
||||
let closedGroupUpdate: SNProtoDataMessageClosedGroupUpdateV2.SNProtoDataMessageClosedGroupUpdateV2Builder
|
||||
let closedGroupControlMessage: SNProtoDataMessageClosedGroupControlMessage.SNProtoDataMessageClosedGroupControlMessageBuilder
|
||||
switch kind {
|
||||
case .new(let publicKey, let name, let encryptionKeyPair, let members, let admins):
|
||||
closedGroupUpdate = SNProtoDataMessageClosedGroupUpdateV2.builder(type: .new)
|
||||
closedGroupUpdate.setPublicKey(publicKey)
|
||||
closedGroupUpdate.setName(name)
|
||||
let encryptionKeyPairAsProto = SNProtoDataMessageClosedGroupUpdateV2KeyPair.builder(publicKey: encryptionKeyPair.publicKey, privateKey: encryptionKeyPair.privateKey)
|
||||
closedGroupControlMessage = SNProtoDataMessageClosedGroupControlMessage.builder(type: .new)
|
||||
closedGroupControlMessage.setPublicKey(publicKey)
|
||||
closedGroupControlMessage.setName(name)
|
||||
let encryptionKeyPairAsProto = SNProtoDataMessageClosedGroupControlMessageKeyPair.builder(publicKey: encryptionKeyPair.publicKey, privateKey: encryptionKeyPair.privateKey)
|
||||
do {
|
||||
closedGroupUpdate.setEncryptionKeyPair(try encryptionKeyPairAsProto.build())
|
||||
closedGroupControlMessage.setEncryptionKeyPair(try encryptionKeyPairAsProto.build())
|
||||
} catch {
|
||||
SNLog("Couldn't construct closed group update proto from: \(self).")
|
||||
return nil
|
||||
}
|
||||
closedGroupUpdate.setMembers(members)
|
||||
closedGroupUpdate.setAdmins(admins)
|
||||
closedGroupControlMessage.setMembers(members)
|
||||
closedGroupControlMessage.setAdmins(admins)
|
||||
case .update(let name, let members):
|
||||
closedGroupUpdate = SNProtoDataMessageClosedGroupUpdateV2.builder(type: .update)
|
||||
closedGroupUpdate.setName(name)
|
||||
closedGroupUpdate.setMembers(members)
|
||||
closedGroupControlMessage = SNProtoDataMessageClosedGroupControlMessage.builder(type: .update)
|
||||
closedGroupControlMessage.setName(name)
|
||||
closedGroupControlMessage.setMembers(members)
|
||||
case .encryptionKeyPair(let wrappers):
|
||||
closedGroupUpdate = SNProtoDataMessageClosedGroupUpdateV2.builder(type: .encryptionKeyPair)
|
||||
closedGroupUpdate.setWrappers(wrappers.compactMap { $0.toProto() })
|
||||
closedGroupControlMessage = SNProtoDataMessageClosedGroupControlMessage.builder(type: .encryptionKeyPair)
|
||||
closedGroupControlMessage.setWrappers(wrappers.compactMap { $0.toProto() })
|
||||
case .nameChange(let name):
|
||||
closedGroupUpdate = SNProtoDataMessageClosedGroupUpdateV2.builder(type: .nameChange)
|
||||
closedGroupUpdate.setName(name)
|
||||
closedGroupControlMessage = SNProtoDataMessageClosedGroupControlMessage.builder(type: .nameChange)
|
||||
closedGroupControlMessage.setName(name)
|
||||
case .usersAdded(let members):
|
||||
closedGroupUpdate = SNProtoDataMessageClosedGroupUpdateV2.builder(type: .usersAdded)
|
||||
closedGroupUpdate.setMembers(members)
|
||||
closedGroupControlMessage = SNProtoDataMessageClosedGroupControlMessage.builder(type: .usersAdded)
|
||||
closedGroupControlMessage.setMembers(members)
|
||||
case .usersRemoved(let members):
|
||||
closedGroupUpdate = SNProtoDataMessageClosedGroupUpdateV2.builder(type: .usersRemoved)
|
||||
closedGroupUpdate.setMembers(members)
|
||||
closedGroupControlMessage = SNProtoDataMessageClosedGroupControlMessage.builder(type: .usersRemoved)
|
||||
closedGroupControlMessage.setMembers(members)
|
||||
case .userLeft:
|
||||
closedGroupUpdate = SNProtoDataMessageClosedGroupUpdateV2.builder(type: .userLeft)
|
||||
closedGroupControlMessage = SNProtoDataMessageClosedGroupControlMessage.builder(type: .userLeft)
|
||||
}
|
||||
let contentProto = SNProtoContent.builder()
|
||||
let dataMessageProto = SNProtoDataMessage.builder()
|
||||
dataMessageProto.setClosedGroupUpdateV2(try closedGroupUpdate.build())
|
||||
dataMessageProto.setClosedGroupControlMessage(try closedGroupControlMessage.build())
|
||||
// Group context
|
||||
try setGroupContextIfNeeded(on: dataMessageProto, using: transaction)
|
||||
// Expiration timer
|
||||
|
@ -264,7 +264,7 @@ public final class ClosedGroupUpdate : ControlMessage {
|
|||
// MARK: Description
|
||||
public override var description: String {
|
||||
"""
|
||||
ClosedGroupUpdate(
|
||||
ClosedGroupControlMessage(
|
||||
kind: \(kind?.description ?? "null")
|
||||
)
|
||||
"""
|
|
@ -47,9 +47,15 @@ public enum SNProtoError: Error {
|
|||
if let _value = source {
|
||||
builder.setSource(_value)
|
||||
}
|
||||
if hasSourceDevice {
|
||||
builder.setSourceDevice(sourceDevice)
|
||||
}
|
||||
if let _value = content {
|
||||
builder.setContent(_value)
|
||||
}
|
||||
if hasServerTimestamp {
|
||||
builder.setServerTimestamp(serverTimestamp)
|
||||
}
|
||||
return builder
|
||||
}
|
||||
|
||||
|
@ -74,6 +80,10 @@ public enum SNProtoError: Error {
|
|||
proto.source = valueParam
|
||||
}
|
||||
|
||||
@objc public func setSourceDevice(_ valueParam: UInt32) {
|
||||
proto.sourceDevice = valueParam
|
||||
}
|
||||
|
||||
@objc public func setTimestamp(_ valueParam: UInt64) {
|
||||
proto.timestamp = valueParam
|
||||
}
|
||||
|
@ -82,6 +92,10 @@ public enum SNProtoError: Error {
|
|||
proto.content = valueParam
|
||||
}
|
||||
|
||||
@objc public func setServerTimestamp(_ valueParam: UInt64) {
|
||||
proto.serverTimestamp = valueParam
|
||||
}
|
||||
|
||||
@objc public func build() throws -> SNProtoEnvelope {
|
||||
return try SNProtoEnvelope.parseProto(proto)
|
||||
}
|
||||
|
@ -107,6 +121,13 @@ public enum SNProtoError: Error {
|
|||
return proto.hasSource
|
||||
}
|
||||
|
||||
@objc public var sourceDevice: UInt32 {
|
||||
return proto.sourceDevice
|
||||
}
|
||||
@objc public var hasSourceDevice: Bool {
|
||||
return proto.hasSourceDevice
|
||||
}
|
||||
|
||||
@objc public var content: Data? {
|
||||
guard proto.hasContent else {
|
||||
return nil
|
||||
|
@ -117,6 +138,13 @@ public enum SNProtoError: Error {
|
|||
return proto.hasContent
|
||||
}
|
||||
|
||||
@objc public var serverTimestamp: UInt64 {
|
||||
return proto.serverTimestamp
|
||||
}
|
||||
@objc public var hasServerTimestamp: Bool {
|
||||
return proto.hasServerTimestamp
|
||||
}
|
||||
|
||||
private init(proto: SessionProtos_Envelope,
|
||||
type: SNProtoEnvelopeType,
|
||||
timestamp: UInt64) {
|
||||
|
@ -326,6 +354,9 @@ extension SNProtoTypingMessage.SNProtoTypingMessageBuilder {
|
|||
if let _value = dataMessage {
|
||||
builder.setDataMessage(_value)
|
||||
}
|
||||
if let _value = syncMessage {
|
||||
builder.setSyncMessage(_value)
|
||||
}
|
||||
if let _value = receiptMessage {
|
||||
builder.setReceiptMessage(_value)
|
||||
}
|
||||
|
@ -345,6 +376,10 @@ extension SNProtoTypingMessage.SNProtoTypingMessageBuilder {
|
|||
proto.dataMessage = valueParam.proto
|
||||
}
|
||||
|
||||
@objc public func setSyncMessage(_ valueParam: SNProtoSyncMessage) {
|
||||
proto.syncMessage = valueParam.proto
|
||||
}
|
||||
|
||||
@objc public func setReceiptMessage(_ valueParam: SNProtoReceiptMessage) {
|
||||
proto.receiptMessage = valueParam.proto
|
||||
}
|
||||
|
@ -366,16 +401,20 @@ extension SNProtoTypingMessage.SNProtoTypingMessageBuilder {
|
|||
|
||||
@objc public let dataMessage: SNProtoDataMessage?
|
||||
|
||||
@objc public let syncMessage: SNProtoSyncMessage?
|
||||
|
||||
@objc public let receiptMessage: SNProtoReceiptMessage?
|
||||
|
||||
@objc public let typingMessage: SNProtoTypingMessage?
|
||||
|
||||
private init(proto: SessionProtos_Content,
|
||||
dataMessage: SNProtoDataMessage?,
|
||||
syncMessage: SNProtoSyncMessage?,
|
||||
receiptMessage: SNProtoReceiptMessage?,
|
||||
typingMessage: SNProtoTypingMessage?) {
|
||||
self.proto = proto
|
||||
self.dataMessage = dataMessage
|
||||
self.syncMessage = syncMessage
|
||||
self.receiptMessage = receiptMessage
|
||||
self.typingMessage = typingMessage
|
||||
}
|
||||
|
@ -396,6 +435,11 @@ extension SNProtoTypingMessage.SNProtoTypingMessageBuilder {
|
|||
dataMessage = try SNProtoDataMessage.parseProto(proto.dataMessage)
|
||||
}
|
||||
|
||||
var syncMessage: SNProtoSyncMessage? = nil
|
||||
if proto.hasSyncMessage {
|
||||
syncMessage = try SNProtoSyncMessage.parseProto(proto.syncMessage)
|
||||
}
|
||||
|
||||
var receiptMessage: SNProtoReceiptMessage? = nil
|
||||
if proto.hasReceiptMessage {
|
||||
receiptMessage = try SNProtoReceiptMessage.parseProto(proto.receiptMessage)
|
||||
|
@ -412,6 +456,7 @@ extension SNProtoTypingMessage.SNProtoTypingMessageBuilder {
|
|||
|
||||
let result = SNProtoContent(proto: proto,
|
||||
dataMessage: dataMessage,
|
||||
syncMessage: syncMessage,
|
||||
receiptMessage: receiptMessage,
|
||||
typingMessage: typingMessage)
|
||||
return result
|
||||
|
@ -2127,25 +2172,25 @@ extension SNProtoDataMessageLokiProfile.SNProtoDataMessageLokiProfileBuilder {
|
|||
|
||||
#endif
|
||||
|
||||
// MARK: - SNProtoDataMessageClosedGroupUpdateV2KeyPair
|
||||
// MARK: - SNProtoDataMessageClosedGroupControlMessageKeyPair
|
||||
|
||||
@objc public class SNProtoDataMessageClosedGroupUpdateV2KeyPair: NSObject {
|
||||
@objc public class SNProtoDataMessageClosedGroupControlMessageKeyPair: NSObject {
|
||||
|
||||
// MARK: - SNProtoDataMessageClosedGroupUpdateV2KeyPairBuilder
|
||||
// MARK: - SNProtoDataMessageClosedGroupControlMessageKeyPairBuilder
|
||||
|
||||
@objc public class func builder(publicKey: Data, privateKey: Data) -> SNProtoDataMessageClosedGroupUpdateV2KeyPairBuilder {
|
||||
return SNProtoDataMessageClosedGroupUpdateV2KeyPairBuilder(publicKey: publicKey, privateKey: privateKey)
|
||||
@objc public class func builder(publicKey: Data, privateKey: Data) -> SNProtoDataMessageClosedGroupControlMessageKeyPairBuilder {
|
||||
return SNProtoDataMessageClosedGroupControlMessageKeyPairBuilder(publicKey: publicKey, privateKey: privateKey)
|
||||
}
|
||||
|
||||
// asBuilder() constructs a builder that reflects the proto's contents.
|
||||
@objc public func asBuilder() -> SNProtoDataMessageClosedGroupUpdateV2KeyPairBuilder {
|
||||
let builder = SNProtoDataMessageClosedGroupUpdateV2KeyPairBuilder(publicKey: publicKey, privateKey: privateKey)
|
||||
@objc public func asBuilder() -> SNProtoDataMessageClosedGroupControlMessageKeyPairBuilder {
|
||||
let builder = SNProtoDataMessageClosedGroupControlMessageKeyPairBuilder(publicKey: publicKey, privateKey: privateKey)
|
||||
return builder
|
||||
}
|
||||
|
||||
@objc public class SNProtoDataMessageClosedGroupUpdateV2KeyPairBuilder: NSObject {
|
||||
@objc public class SNProtoDataMessageClosedGroupControlMessageKeyPairBuilder: NSObject {
|
||||
|
||||
private var proto = SessionProtos_DataMessage.ClosedGroupUpdateV2.KeyPair()
|
||||
private var proto = SessionProtos_DataMessage.ClosedGroupControlMessage.KeyPair()
|
||||
|
||||
@objc fileprivate override init() {}
|
||||
|
||||
|
@ -2164,22 +2209,22 @@ extension SNProtoDataMessageLokiProfile.SNProtoDataMessageLokiProfileBuilder {
|
|||
proto.privateKey = valueParam
|
||||
}
|
||||
|
||||
@objc public func build() throws -> SNProtoDataMessageClosedGroupUpdateV2KeyPair {
|
||||
return try SNProtoDataMessageClosedGroupUpdateV2KeyPair.parseProto(proto)
|
||||
@objc public func build() throws -> SNProtoDataMessageClosedGroupControlMessageKeyPair {
|
||||
return try SNProtoDataMessageClosedGroupControlMessageKeyPair.parseProto(proto)
|
||||
}
|
||||
|
||||
@objc public func buildSerializedData() throws -> Data {
|
||||
return try SNProtoDataMessageClosedGroupUpdateV2KeyPair.parseProto(proto).serializedData()
|
||||
return try SNProtoDataMessageClosedGroupControlMessageKeyPair.parseProto(proto).serializedData()
|
||||
}
|
||||
}
|
||||
|
||||
fileprivate let proto: SessionProtos_DataMessage.ClosedGroupUpdateV2.KeyPair
|
||||
fileprivate let proto: SessionProtos_DataMessage.ClosedGroupControlMessage.KeyPair
|
||||
|
||||
@objc public let publicKey: Data
|
||||
|
||||
@objc public let privateKey: Data
|
||||
|
||||
private init(proto: SessionProtos_DataMessage.ClosedGroupUpdateV2.KeyPair,
|
||||
private init(proto: SessionProtos_DataMessage.ClosedGroupControlMessage.KeyPair,
|
||||
publicKey: Data,
|
||||
privateKey: Data) {
|
||||
self.proto = proto
|
||||
|
@ -2192,12 +2237,12 @@ extension SNProtoDataMessageLokiProfile.SNProtoDataMessageLokiProfileBuilder {
|
|||
return try self.proto.serializedData()
|
||||
}
|
||||
|
||||
@objc public class func parseData(_ serializedData: Data) throws -> SNProtoDataMessageClosedGroupUpdateV2KeyPair {
|
||||
let proto = try SessionProtos_DataMessage.ClosedGroupUpdateV2.KeyPair(serializedData: serializedData)
|
||||
@objc public class func parseData(_ serializedData: Data) throws -> SNProtoDataMessageClosedGroupControlMessageKeyPair {
|
||||
let proto = try SessionProtos_DataMessage.ClosedGroupControlMessage.KeyPair(serializedData: serializedData)
|
||||
return try parseProto(proto)
|
||||
}
|
||||
|
||||
fileprivate class func parseProto(_ proto: SessionProtos_DataMessage.ClosedGroupUpdateV2.KeyPair) throws -> SNProtoDataMessageClosedGroupUpdateV2KeyPair {
|
||||
fileprivate class func parseProto(_ proto: SessionProtos_DataMessage.ClosedGroupControlMessage.KeyPair) throws -> SNProtoDataMessageClosedGroupControlMessageKeyPair {
|
||||
guard proto.hasPublicKey else {
|
||||
throw SNProtoError.invalidProtobuf(description: "\(logTag) missing required field: publicKey")
|
||||
}
|
||||
|
@ -2208,13 +2253,13 @@ extension SNProtoDataMessageLokiProfile.SNProtoDataMessageLokiProfileBuilder {
|
|||
}
|
||||
let privateKey = proto.privateKey
|
||||
|
||||
// MARK: - Begin Validation Logic for SNProtoDataMessageClosedGroupUpdateV2KeyPair -
|
||||
// MARK: - Begin Validation Logic for SNProtoDataMessageClosedGroupControlMessageKeyPair -
|
||||
|
||||
// MARK: - End Validation Logic for SNProtoDataMessageClosedGroupUpdateV2KeyPair -
|
||||
// MARK: - End Validation Logic for SNProtoDataMessageClosedGroupControlMessageKeyPair -
|
||||
|
||||
let result = SNProtoDataMessageClosedGroupUpdateV2KeyPair(proto: proto,
|
||||
publicKey: publicKey,
|
||||
privateKey: privateKey)
|
||||
let result = SNProtoDataMessageClosedGroupControlMessageKeyPair(proto: proto,
|
||||
publicKey: publicKey,
|
||||
privateKey: privateKey)
|
||||
return result
|
||||
}
|
||||
|
||||
|
@ -2225,39 +2270,39 @@ extension SNProtoDataMessageLokiProfile.SNProtoDataMessageLokiProfileBuilder {
|
|||
|
||||
#if DEBUG
|
||||
|
||||
extension SNProtoDataMessageClosedGroupUpdateV2KeyPair {
|
||||
extension SNProtoDataMessageClosedGroupControlMessageKeyPair {
|
||||
@objc public func serializedDataIgnoringErrors() -> Data? {
|
||||
return try! self.serializedData()
|
||||
}
|
||||
}
|
||||
|
||||
extension SNProtoDataMessageClosedGroupUpdateV2KeyPair.SNProtoDataMessageClosedGroupUpdateV2KeyPairBuilder {
|
||||
@objc public func buildIgnoringErrors() -> SNProtoDataMessageClosedGroupUpdateV2KeyPair? {
|
||||
extension SNProtoDataMessageClosedGroupControlMessageKeyPair.SNProtoDataMessageClosedGroupControlMessageKeyPairBuilder {
|
||||
@objc public func buildIgnoringErrors() -> SNProtoDataMessageClosedGroupControlMessageKeyPair? {
|
||||
return try! self.build()
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
// MARK: - SNProtoDataMessageClosedGroupUpdateV2KeyPairWrapper
|
||||
// MARK: - SNProtoDataMessageClosedGroupControlMessageKeyPairWrapper
|
||||
|
||||
@objc public class SNProtoDataMessageClosedGroupUpdateV2KeyPairWrapper: NSObject {
|
||||
@objc public class SNProtoDataMessageClosedGroupControlMessageKeyPairWrapper: NSObject {
|
||||
|
||||
// MARK: - SNProtoDataMessageClosedGroupUpdateV2KeyPairWrapperBuilder
|
||||
// MARK: - SNProtoDataMessageClosedGroupControlMessageKeyPairWrapperBuilder
|
||||
|
||||
@objc public class func builder(publicKey: Data, encryptedKeyPair: Data) -> SNProtoDataMessageClosedGroupUpdateV2KeyPairWrapperBuilder {
|
||||
return SNProtoDataMessageClosedGroupUpdateV2KeyPairWrapperBuilder(publicKey: publicKey, encryptedKeyPair: encryptedKeyPair)
|
||||
@objc public class func builder(publicKey: Data, encryptedKeyPair: Data) -> SNProtoDataMessageClosedGroupControlMessageKeyPairWrapperBuilder {
|
||||
return SNProtoDataMessageClosedGroupControlMessageKeyPairWrapperBuilder(publicKey: publicKey, encryptedKeyPair: encryptedKeyPair)
|
||||
}
|
||||
|
||||
// asBuilder() constructs a builder that reflects the proto's contents.
|
||||
@objc public func asBuilder() -> SNProtoDataMessageClosedGroupUpdateV2KeyPairWrapperBuilder {
|
||||
let builder = SNProtoDataMessageClosedGroupUpdateV2KeyPairWrapperBuilder(publicKey: publicKey, encryptedKeyPair: encryptedKeyPair)
|
||||
@objc public func asBuilder() -> SNProtoDataMessageClosedGroupControlMessageKeyPairWrapperBuilder {
|
||||
let builder = SNProtoDataMessageClosedGroupControlMessageKeyPairWrapperBuilder(publicKey: publicKey, encryptedKeyPair: encryptedKeyPair)
|
||||
return builder
|
||||
}
|
||||
|
||||
@objc public class SNProtoDataMessageClosedGroupUpdateV2KeyPairWrapperBuilder: NSObject {
|
||||
@objc public class SNProtoDataMessageClosedGroupControlMessageKeyPairWrapperBuilder: NSObject {
|
||||
|
||||
private var proto = SessionProtos_DataMessage.ClosedGroupUpdateV2.KeyPairWrapper()
|
||||
private var proto = SessionProtos_DataMessage.ClosedGroupControlMessage.KeyPairWrapper()
|
||||
|
||||
@objc fileprivate override init() {}
|
||||
|
||||
|
@ -2276,22 +2321,22 @@ extension SNProtoDataMessageClosedGroupUpdateV2KeyPair.SNProtoDataMessageClosedG
|
|||
proto.encryptedKeyPair = valueParam
|
||||
}
|
||||
|
||||
@objc public func build() throws -> SNProtoDataMessageClosedGroupUpdateV2KeyPairWrapper {
|
||||
return try SNProtoDataMessageClosedGroupUpdateV2KeyPairWrapper.parseProto(proto)
|
||||
@objc public func build() throws -> SNProtoDataMessageClosedGroupControlMessageKeyPairWrapper {
|
||||
return try SNProtoDataMessageClosedGroupControlMessageKeyPairWrapper.parseProto(proto)
|
||||
}
|
||||
|
||||
@objc public func buildSerializedData() throws -> Data {
|
||||
return try SNProtoDataMessageClosedGroupUpdateV2KeyPairWrapper.parseProto(proto).serializedData()
|
||||
return try SNProtoDataMessageClosedGroupControlMessageKeyPairWrapper.parseProto(proto).serializedData()
|
||||
}
|
||||
}
|
||||
|
||||
fileprivate let proto: SessionProtos_DataMessage.ClosedGroupUpdateV2.KeyPairWrapper
|
||||
fileprivate let proto: SessionProtos_DataMessage.ClosedGroupControlMessage.KeyPairWrapper
|
||||
|
||||
@objc public let publicKey: Data
|
||||
|
||||
@objc public let encryptedKeyPair: Data
|
||||
|
||||
private init(proto: SessionProtos_DataMessage.ClosedGroupUpdateV2.KeyPairWrapper,
|
||||
private init(proto: SessionProtos_DataMessage.ClosedGroupControlMessage.KeyPairWrapper,
|
||||
publicKey: Data,
|
||||
encryptedKeyPair: Data) {
|
||||
self.proto = proto
|
||||
|
@ -2304,12 +2349,12 @@ extension SNProtoDataMessageClosedGroupUpdateV2KeyPair.SNProtoDataMessageClosedG
|
|||
return try self.proto.serializedData()
|
||||
}
|
||||
|
||||
@objc public class func parseData(_ serializedData: Data) throws -> SNProtoDataMessageClosedGroupUpdateV2KeyPairWrapper {
|
||||
let proto = try SessionProtos_DataMessage.ClosedGroupUpdateV2.KeyPairWrapper(serializedData: serializedData)
|
||||
@objc public class func parseData(_ serializedData: Data) throws -> SNProtoDataMessageClosedGroupControlMessageKeyPairWrapper {
|
||||
let proto = try SessionProtos_DataMessage.ClosedGroupControlMessage.KeyPairWrapper(serializedData: serializedData)
|
||||
return try parseProto(proto)
|
||||
}
|
||||
|
||||
fileprivate class func parseProto(_ proto: SessionProtos_DataMessage.ClosedGroupUpdateV2.KeyPairWrapper) throws -> SNProtoDataMessageClosedGroupUpdateV2KeyPairWrapper {
|
||||
fileprivate class func parseProto(_ proto: SessionProtos_DataMessage.ClosedGroupControlMessage.KeyPairWrapper) throws -> SNProtoDataMessageClosedGroupControlMessageKeyPairWrapper {
|
||||
guard proto.hasPublicKey else {
|
||||
throw SNProtoError.invalidProtobuf(description: "\(logTag) missing required field: publicKey")
|
||||
}
|
||||
|
@ -2320,13 +2365,13 @@ extension SNProtoDataMessageClosedGroupUpdateV2KeyPair.SNProtoDataMessageClosedG
|
|||
}
|
||||
let encryptedKeyPair = proto.encryptedKeyPair
|
||||
|
||||
// MARK: - Begin Validation Logic for SNProtoDataMessageClosedGroupUpdateV2KeyPairWrapper -
|
||||
// MARK: - Begin Validation Logic for SNProtoDataMessageClosedGroupControlMessageKeyPairWrapper -
|
||||
|
||||
// MARK: - End Validation Logic for SNProtoDataMessageClosedGroupUpdateV2KeyPairWrapper -
|
||||
// MARK: - End Validation Logic for SNProtoDataMessageClosedGroupControlMessageKeyPairWrapper -
|
||||
|
||||
let result = SNProtoDataMessageClosedGroupUpdateV2KeyPairWrapper(proto: proto,
|
||||
publicKey: publicKey,
|
||||
encryptedKeyPair: encryptedKeyPair)
|
||||
let result = SNProtoDataMessageClosedGroupControlMessageKeyPairWrapper(proto: proto,
|
||||
publicKey: publicKey,
|
||||
encryptedKeyPair: encryptedKeyPair)
|
||||
return result
|
||||
}
|
||||
|
||||
|
@ -2337,27 +2382,27 @@ extension SNProtoDataMessageClosedGroupUpdateV2KeyPair.SNProtoDataMessageClosedG
|
|||
|
||||
#if DEBUG
|
||||
|
||||
extension SNProtoDataMessageClosedGroupUpdateV2KeyPairWrapper {
|
||||
extension SNProtoDataMessageClosedGroupControlMessageKeyPairWrapper {
|
||||
@objc public func serializedDataIgnoringErrors() -> Data? {
|
||||
return try! self.serializedData()
|
||||
}
|
||||
}
|
||||
|
||||
extension SNProtoDataMessageClosedGroupUpdateV2KeyPairWrapper.SNProtoDataMessageClosedGroupUpdateV2KeyPairWrapperBuilder {
|
||||
@objc public func buildIgnoringErrors() -> SNProtoDataMessageClosedGroupUpdateV2KeyPairWrapper? {
|
||||
extension SNProtoDataMessageClosedGroupControlMessageKeyPairWrapper.SNProtoDataMessageClosedGroupControlMessageKeyPairWrapperBuilder {
|
||||
@objc public func buildIgnoringErrors() -> SNProtoDataMessageClosedGroupControlMessageKeyPairWrapper? {
|
||||
return try! self.build()
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
// MARK: - SNProtoDataMessageClosedGroupUpdateV2
|
||||
// MARK: - SNProtoDataMessageClosedGroupControlMessage
|
||||
|
||||
@objc public class SNProtoDataMessageClosedGroupUpdateV2: NSObject {
|
||||
@objc public class SNProtoDataMessageClosedGroupControlMessage: NSObject {
|
||||
|
||||
// MARK: - SNProtoDataMessageClosedGroupUpdateV2Type
|
||||
// MARK: - SNProtoDataMessageClosedGroupControlMessageType
|
||||
|
||||
@objc public enum SNProtoDataMessageClosedGroupUpdateV2Type: Int32 {
|
||||
@objc public enum SNProtoDataMessageClosedGroupControlMessageType: Int32 {
|
||||
case new = 1
|
||||
case update = 2
|
||||
case encryptionKeyPair = 3
|
||||
|
@ -2367,7 +2412,7 @@ extension SNProtoDataMessageClosedGroupUpdateV2KeyPairWrapper.SNProtoDataMessage
|
|||
case userLeft = 7
|
||||
}
|
||||
|
||||
private class func SNProtoDataMessageClosedGroupUpdateV2TypeWrap(_ value: SessionProtos_DataMessage.ClosedGroupUpdateV2.TypeEnum) -> SNProtoDataMessageClosedGroupUpdateV2Type {
|
||||
private class func SNProtoDataMessageClosedGroupControlMessageTypeWrap(_ value: SessionProtos_DataMessage.ClosedGroupControlMessage.TypeEnum) -> SNProtoDataMessageClosedGroupControlMessageType {
|
||||
switch value {
|
||||
case .new: return .new
|
||||
case .update: return .update
|
||||
|
@ -2379,7 +2424,7 @@ extension SNProtoDataMessageClosedGroupUpdateV2KeyPairWrapper.SNProtoDataMessage
|
|||
}
|
||||
}
|
||||
|
||||
private class func SNProtoDataMessageClosedGroupUpdateV2TypeUnwrap(_ value: SNProtoDataMessageClosedGroupUpdateV2Type) -> SessionProtos_DataMessage.ClosedGroupUpdateV2.TypeEnum {
|
||||
private class func SNProtoDataMessageClosedGroupControlMessageTypeUnwrap(_ value: SNProtoDataMessageClosedGroupControlMessageType) -> SessionProtos_DataMessage.ClosedGroupControlMessage.TypeEnum {
|
||||
switch value {
|
||||
case .new: return .new
|
||||
case .update: return .update
|
||||
|
@ -2391,15 +2436,15 @@ extension SNProtoDataMessageClosedGroupUpdateV2KeyPairWrapper.SNProtoDataMessage
|
|||
}
|
||||
}
|
||||
|
||||
// MARK: - SNProtoDataMessageClosedGroupUpdateV2Builder
|
||||
// MARK: - SNProtoDataMessageClosedGroupControlMessageBuilder
|
||||
|
||||
@objc public class func builder(type: SNProtoDataMessageClosedGroupUpdateV2Type) -> SNProtoDataMessageClosedGroupUpdateV2Builder {
|
||||
return SNProtoDataMessageClosedGroupUpdateV2Builder(type: type)
|
||||
@objc public class func builder(type: SNProtoDataMessageClosedGroupControlMessageType) -> SNProtoDataMessageClosedGroupControlMessageBuilder {
|
||||
return SNProtoDataMessageClosedGroupControlMessageBuilder(type: type)
|
||||
}
|
||||
|
||||
// asBuilder() constructs a builder that reflects the proto's contents.
|
||||
@objc public func asBuilder() -> SNProtoDataMessageClosedGroupUpdateV2Builder {
|
||||
let builder = SNProtoDataMessageClosedGroupUpdateV2Builder(type: type)
|
||||
@objc public func asBuilder() -> SNProtoDataMessageClosedGroupControlMessageBuilder {
|
||||
let builder = SNProtoDataMessageClosedGroupControlMessageBuilder(type: type)
|
||||
if let _value = publicKey {
|
||||
builder.setPublicKey(_value)
|
||||
}
|
||||
|
@ -2415,20 +2460,20 @@ extension SNProtoDataMessageClosedGroupUpdateV2KeyPairWrapper.SNProtoDataMessage
|
|||
return builder
|
||||
}
|
||||
|
||||
@objc public class SNProtoDataMessageClosedGroupUpdateV2Builder: NSObject {
|
||||
@objc public class SNProtoDataMessageClosedGroupControlMessageBuilder: NSObject {
|
||||
|
||||
private var proto = SessionProtos_DataMessage.ClosedGroupUpdateV2()
|
||||
private var proto = SessionProtos_DataMessage.ClosedGroupControlMessage()
|
||||
|
||||
@objc fileprivate override init() {}
|
||||
|
||||
@objc fileprivate init(type: SNProtoDataMessageClosedGroupUpdateV2Type) {
|
||||
@objc fileprivate init(type: SNProtoDataMessageClosedGroupControlMessageType) {
|
||||
super.init()
|
||||
|
||||
setType(type)
|
||||
}
|
||||
|
||||
@objc public func setType(_ valueParam: SNProtoDataMessageClosedGroupUpdateV2Type) {
|
||||
proto.type = SNProtoDataMessageClosedGroupUpdateV2TypeUnwrap(valueParam)
|
||||
@objc public func setType(_ valueParam: SNProtoDataMessageClosedGroupControlMessageType) {
|
||||
proto.type = SNProtoDataMessageClosedGroupControlMessageTypeUnwrap(valueParam)
|
||||
}
|
||||
|
||||
@objc public func setPublicKey(_ valueParam: Data) {
|
||||
|
@ -2439,7 +2484,7 @@ extension SNProtoDataMessageClosedGroupUpdateV2KeyPairWrapper.SNProtoDataMessage
|
|||
proto.name = valueParam
|
||||
}
|
||||
|
||||
@objc public func setEncryptionKeyPair(_ valueParam: SNProtoDataMessageClosedGroupUpdateV2KeyPair) {
|
||||
@objc public func setEncryptionKeyPair(_ valueParam: SNProtoDataMessageClosedGroupControlMessageKeyPair) {
|
||||
proto.encryptionKeyPair = valueParam.proto
|
||||
}
|
||||
|
||||
|
@ -2463,32 +2508,32 @@ extension SNProtoDataMessageClosedGroupUpdateV2KeyPairWrapper.SNProtoDataMessage
|
|||
proto.admins = wrappedItems
|
||||
}
|
||||
|
||||
@objc public func addWrappers(_ valueParam: SNProtoDataMessageClosedGroupUpdateV2KeyPairWrapper) {
|
||||
@objc public func addWrappers(_ valueParam: SNProtoDataMessageClosedGroupControlMessageKeyPairWrapper) {
|
||||
var items = proto.wrappers
|
||||
items.append(valueParam.proto)
|
||||
proto.wrappers = items
|
||||
}
|
||||
|
||||
@objc public func setWrappers(_ wrappedItems: [SNProtoDataMessageClosedGroupUpdateV2KeyPairWrapper]) {
|
||||
@objc public func setWrappers(_ wrappedItems: [SNProtoDataMessageClosedGroupControlMessageKeyPairWrapper]) {
|
||||
proto.wrappers = wrappedItems.map { $0.proto }
|
||||
}
|
||||
|
||||
@objc public func build() throws -> SNProtoDataMessageClosedGroupUpdateV2 {
|
||||
return try SNProtoDataMessageClosedGroupUpdateV2.parseProto(proto)
|
||||
@objc public func build() throws -> SNProtoDataMessageClosedGroupControlMessage {
|
||||
return try SNProtoDataMessageClosedGroupControlMessage.parseProto(proto)
|
||||
}
|
||||
|
||||
@objc public func buildSerializedData() throws -> Data {
|
||||
return try SNProtoDataMessageClosedGroupUpdateV2.parseProto(proto).serializedData()
|
||||
return try SNProtoDataMessageClosedGroupControlMessage.parseProto(proto).serializedData()
|
||||
}
|
||||
}
|
||||
|
||||
fileprivate let proto: SessionProtos_DataMessage.ClosedGroupUpdateV2
|
||||
fileprivate let proto: SessionProtos_DataMessage.ClosedGroupControlMessage
|
||||
|
||||
@objc public let type: SNProtoDataMessageClosedGroupUpdateV2Type
|
||||
@objc public let type: SNProtoDataMessageClosedGroupControlMessageType
|
||||
|
||||
@objc public let encryptionKeyPair: SNProtoDataMessageClosedGroupUpdateV2KeyPair?
|
||||
@objc public let encryptionKeyPair: SNProtoDataMessageClosedGroupControlMessageKeyPair?
|
||||
|
||||
@objc public let wrappers: [SNProtoDataMessageClosedGroupUpdateV2KeyPairWrapper]
|
||||
@objc public let wrappers: [SNProtoDataMessageClosedGroupControlMessageKeyPairWrapper]
|
||||
|
||||
@objc public var publicKey: Data? {
|
||||
guard proto.hasPublicKey else {
|
||||
|
@ -2518,10 +2563,10 @@ extension SNProtoDataMessageClosedGroupUpdateV2KeyPairWrapper.SNProtoDataMessage
|
|||
return proto.admins
|
||||
}
|
||||
|
||||
private init(proto: SessionProtos_DataMessage.ClosedGroupUpdateV2,
|
||||
type: SNProtoDataMessageClosedGroupUpdateV2Type,
|
||||
encryptionKeyPair: SNProtoDataMessageClosedGroupUpdateV2KeyPair?,
|
||||
wrappers: [SNProtoDataMessageClosedGroupUpdateV2KeyPairWrapper]) {
|
||||
private init(proto: SessionProtos_DataMessage.ClosedGroupControlMessage,
|
||||
type: SNProtoDataMessageClosedGroupControlMessageType,
|
||||
encryptionKeyPair: SNProtoDataMessageClosedGroupControlMessageKeyPair?,
|
||||
wrappers: [SNProtoDataMessageClosedGroupControlMessageKeyPairWrapper]) {
|
||||
self.proto = proto
|
||||
self.type = type
|
||||
self.encryptionKeyPair = encryptionKeyPair
|
||||
|
@ -2533,33 +2578,33 @@ extension SNProtoDataMessageClosedGroupUpdateV2KeyPairWrapper.SNProtoDataMessage
|
|||
return try self.proto.serializedData()
|
||||
}
|
||||
|
||||
@objc public class func parseData(_ serializedData: Data) throws -> SNProtoDataMessageClosedGroupUpdateV2 {
|
||||
let proto = try SessionProtos_DataMessage.ClosedGroupUpdateV2(serializedData: serializedData)
|
||||
@objc public class func parseData(_ serializedData: Data) throws -> SNProtoDataMessageClosedGroupControlMessage {
|
||||
let proto = try SessionProtos_DataMessage.ClosedGroupControlMessage(serializedData: serializedData)
|
||||
return try parseProto(proto)
|
||||
}
|
||||
|
||||
fileprivate class func parseProto(_ proto: SessionProtos_DataMessage.ClosedGroupUpdateV2) throws -> SNProtoDataMessageClosedGroupUpdateV2 {
|
||||
fileprivate class func parseProto(_ proto: SessionProtos_DataMessage.ClosedGroupControlMessage) throws -> SNProtoDataMessageClosedGroupControlMessage {
|
||||
guard proto.hasType else {
|
||||
throw SNProtoError.invalidProtobuf(description: "\(logTag) missing required field: type")
|
||||
}
|
||||
let type = SNProtoDataMessageClosedGroupUpdateV2TypeWrap(proto.type)
|
||||
let type = SNProtoDataMessageClosedGroupControlMessageTypeWrap(proto.type)
|
||||
|
||||
var encryptionKeyPair: SNProtoDataMessageClosedGroupUpdateV2KeyPair? = nil
|
||||
var encryptionKeyPair: SNProtoDataMessageClosedGroupControlMessageKeyPair? = nil
|
||||
if proto.hasEncryptionKeyPair {
|
||||
encryptionKeyPair = try SNProtoDataMessageClosedGroupUpdateV2KeyPair.parseProto(proto.encryptionKeyPair)
|
||||
encryptionKeyPair = try SNProtoDataMessageClosedGroupControlMessageKeyPair.parseProto(proto.encryptionKeyPair)
|
||||
}
|
||||
|
||||
var wrappers: [SNProtoDataMessageClosedGroupUpdateV2KeyPairWrapper] = []
|
||||
wrappers = try proto.wrappers.map { try SNProtoDataMessageClosedGroupUpdateV2KeyPairWrapper.parseProto($0) }
|
||||
var wrappers: [SNProtoDataMessageClosedGroupControlMessageKeyPairWrapper] = []
|
||||
wrappers = try proto.wrappers.map { try SNProtoDataMessageClosedGroupControlMessageKeyPairWrapper.parseProto($0) }
|
||||
|
||||
// MARK: - Begin Validation Logic for SNProtoDataMessageClosedGroupUpdateV2 -
|
||||
// MARK: - Begin Validation Logic for SNProtoDataMessageClosedGroupControlMessage -
|
||||
|
||||
// MARK: - End Validation Logic for SNProtoDataMessageClosedGroupUpdateV2 -
|
||||
// MARK: - End Validation Logic for SNProtoDataMessageClosedGroupControlMessage -
|
||||
|
||||
let result = SNProtoDataMessageClosedGroupUpdateV2(proto: proto,
|
||||
type: type,
|
||||
encryptionKeyPair: encryptionKeyPair,
|
||||
wrappers: wrappers)
|
||||
let result = SNProtoDataMessageClosedGroupControlMessage(proto: proto,
|
||||
type: type,
|
||||
encryptionKeyPair: encryptionKeyPair,
|
||||
wrappers: wrappers)
|
||||
return result
|
||||
}
|
||||
|
||||
|
@ -2570,14 +2615,14 @@ extension SNProtoDataMessageClosedGroupUpdateV2KeyPairWrapper.SNProtoDataMessage
|
|||
|
||||
#if DEBUG
|
||||
|
||||
extension SNProtoDataMessageClosedGroupUpdateV2 {
|
||||
extension SNProtoDataMessageClosedGroupControlMessage {
|
||||
@objc public func serializedDataIgnoringErrors() -> Data? {
|
||||
return try! self.serializedData()
|
||||
}
|
||||
}
|
||||
|
||||
extension SNProtoDataMessageClosedGroupUpdateV2.SNProtoDataMessageClosedGroupUpdateV2Builder {
|
||||
@objc public func buildIgnoringErrors() -> SNProtoDataMessageClosedGroupUpdateV2? {
|
||||
extension SNProtoDataMessageClosedGroupControlMessage.SNProtoDataMessageClosedGroupControlMessageBuilder {
|
||||
@objc public func buildIgnoringErrors() -> SNProtoDataMessageClosedGroupControlMessage? {
|
||||
return try! self.build()
|
||||
}
|
||||
}
|
||||
|
@ -2642,8 +2687,8 @@ extension SNProtoDataMessageClosedGroupUpdateV2.SNProtoDataMessageClosedGroupUpd
|
|||
if let _value = profile {
|
||||
builder.setProfile(_value)
|
||||
}
|
||||
if let _value = closedGroupUpdateV2 {
|
||||
builder.setClosedGroupUpdateV2(_value)
|
||||
if let _value = closedGroupControlMessage {
|
||||
builder.setClosedGroupControlMessage(_value)
|
||||
}
|
||||
if let _value = publicChatInfo {
|
||||
builder.setPublicChatInfo(_value)
|
||||
|
@ -2719,8 +2764,8 @@ extension SNProtoDataMessageClosedGroupUpdateV2.SNProtoDataMessageClosedGroupUpd
|
|||
proto.profile = valueParam.proto
|
||||
}
|
||||
|
||||
@objc public func setClosedGroupUpdateV2(_ valueParam: SNProtoDataMessageClosedGroupUpdateV2) {
|
||||
proto.closedGroupUpdateV2 = valueParam.proto
|
||||
@objc public func setClosedGroupControlMessage(_ valueParam: SNProtoDataMessageClosedGroupControlMessage) {
|
||||
proto.closedGroupControlMessage = valueParam.proto
|
||||
}
|
||||
|
||||
@objc public func setPublicChatInfo(_ valueParam: SNProtoPublicChatInfo) {
|
||||
|
@ -2750,7 +2795,7 @@ extension SNProtoDataMessageClosedGroupUpdateV2.SNProtoDataMessageClosedGroupUpd
|
|||
|
||||
@objc public let profile: SNProtoDataMessageLokiProfile?
|
||||
|
||||
@objc public let closedGroupUpdateV2: SNProtoDataMessageClosedGroupUpdateV2?
|
||||
@objc public let closedGroupControlMessage: SNProtoDataMessageClosedGroupControlMessage?
|
||||
|
||||
@objc public let publicChatInfo: SNProtoPublicChatInfo?
|
||||
|
||||
|
@ -2802,7 +2847,7 @@ extension SNProtoDataMessageClosedGroupUpdateV2.SNProtoDataMessageClosedGroupUpd
|
|||
contact: [SNProtoDataMessageContact],
|
||||
preview: [SNProtoDataMessagePreview],
|
||||
profile: SNProtoDataMessageLokiProfile?,
|
||||
closedGroupUpdateV2: SNProtoDataMessageClosedGroupUpdateV2?,
|
||||
closedGroupControlMessage: SNProtoDataMessageClosedGroupControlMessage?,
|
||||
publicChatInfo: SNProtoPublicChatInfo?) {
|
||||
self.proto = proto
|
||||
self.attachments = attachments
|
||||
|
@ -2811,7 +2856,7 @@ extension SNProtoDataMessageClosedGroupUpdateV2.SNProtoDataMessageClosedGroupUpd
|
|||
self.contact = contact
|
||||
self.preview = preview
|
||||
self.profile = profile
|
||||
self.closedGroupUpdateV2 = closedGroupUpdateV2
|
||||
self.closedGroupControlMessage = closedGroupControlMessage
|
||||
self.publicChatInfo = publicChatInfo
|
||||
}
|
||||
|
||||
|
@ -2850,9 +2895,9 @@ extension SNProtoDataMessageClosedGroupUpdateV2.SNProtoDataMessageClosedGroupUpd
|
|||
profile = try SNProtoDataMessageLokiProfile.parseProto(proto.profile)
|
||||
}
|
||||
|
||||
var closedGroupUpdateV2: SNProtoDataMessageClosedGroupUpdateV2? = nil
|
||||
if proto.hasClosedGroupUpdateV2 {
|
||||
closedGroupUpdateV2 = try SNProtoDataMessageClosedGroupUpdateV2.parseProto(proto.closedGroupUpdateV2)
|
||||
var closedGroupControlMessage: SNProtoDataMessageClosedGroupControlMessage? = nil
|
||||
if proto.hasClosedGroupControlMessage {
|
||||
closedGroupControlMessage = try SNProtoDataMessageClosedGroupControlMessage.parseProto(proto.closedGroupControlMessage)
|
||||
}
|
||||
|
||||
var publicChatInfo: SNProtoPublicChatInfo? = nil
|
||||
|
@ -2871,7 +2916,7 @@ extension SNProtoDataMessageClosedGroupUpdateV2.SNProtoDataMessageClosedGroupUpd
|
|||
contact: contact,
|
||||
preview: preview,
|
||||
profile: profile,
|
||||
closedGroupUpdateV2: closedGroupUpdateV2,
|
||||
closedGroupControlMessage: closedGroupControlMessage,
|
||||
publicChatInfo: publicChatInfo)
|
||||
return result
|
||||
}
|
||||
|
@ -3030,6 +3075,270 @@ extension SNProtoReceiptMessage.SNProtoReceiptMessageBuilder {
|
|||
|
||||
#endif
|
||||
|
||||
// MARK: - SNProtoSyncMessageSent
|
||||
|
||||
@objc public class SNProtoSyncMessageSent: NSObject {
|
||||
|
||||
// MARK: - SNProtoSyncMessageSentBuilder
|
||||
|
||||
@objc public class func builder() -> SNProtoSyncMessageSentBuilder {
|
||||
return SNProtoSyncMessageSentBuilder()
|
||||
}
|
||||
|
||||
// asBuilder() constructs a builder that reflects the proto's contents.
|
||||
@objc public func asBuilder() -> SNProtoSyncMessageSentBuilder {
|
||||
let builder = SNProtoSyncMessageSentBuilder()
|
||||
if let _value = destination {
|
||||
builder.setDestination(_value)
|
||||
}
|
||||
if hasTimestamp {
|
||||
builder.setTimestamp(timestamp)
|
||||
}
|
||||
if let _value = message {
|
||||
builder.setMessage(_value)
|
||||
}
|
||||
if hasExpirationStartTimestamp {
|
||||
builder.setExpirationStartTimestamp(expirationStartTimestamp)
|
||||
}
|
||||
if hasIsRecipientUpdate {
|
||||
builder.setIsRecipientUpdate(isRecipientUpdate)
|
||||
}
|
||||
return builder
|
||||
}
|
||||
|
||||
@objc public class SNProtoSyncMessageSentBuilder: NSObject {
|
||||
|
||||
private var proto = SessionProtos_SyncMessage.Sent()
|
||||
|
||||
@objc fileprivate override init() {}
|
||||
|
||||
@objc public func setDestination(_ valueParam: String) {
|
||||
proto.destination = valueParam
|
||||
}
|
||||
|
||||
@objc public func setTimestamp(_ valueParam: UInt64) {
|
||||
proto.timestamp = valueParam
|
||||
}
|
||||
|
||||
@objc public func setMessage(_ valueParam: SNProtoDataMessage) {
|
||||
proto.message = valueParam.proto
|
||||
}
|
||||
|
||||
@objc public func setExpirationStartTimestamp(_ valueParam: UInt64) {
|
||||
proto.expirationStartTimestamp = valueParam
|
||||
}
|
||||
|
||||
@objc public func setIsRecipientUpdate(_ valueParam: Bool) {
|
||||
proto.isRecipientUpdate = valueParam
|
||||
}
|
||||
|
||||
@objc public func build() throws -> SNProtoSyncMessageSent {
|
||||
return try SNProtoSyncMessageSent.parseProto(proto)
|
||||
}
|
||||
|
||||
@objc public func buildSerializedData() throws -> Data {
|
||||
return try SNProtoSyncMessageSent.parseProto(proto).serializedData()
|
||||
}
|
||||
}
|
||||
|
||||
fileprivate let proto: SessionProtos_SyncMessage.Sent
|
||||
|
||||
@objc public let message: SNProtoDataMessage?
|
||||
|
||||
@objc public var destination: String? {
|
||||
guard proto.hasDestination else {
|
||||
return nil
|
||||
}
|
||||
return proto.destination
|
||||
}
|
||||
@objc public var hasDestination: Bool {
|
||||
return proto.hasDestination
|
||||
}
|
||||
|
||||
@objc public var timestamp: UInt64 {
|
||||
return proto.timestamp
|
||||
}
|
||||
@objc public var hasTimestamp: Bool {
|
||||
return proto.hasTimestamp
|
||||
}
|
||||
|
||||
@objc public var expirationStartTimestamp: UInt64 {
|
||||
return proto.expirationStartTimestamp
|
||||
}
|
||||
@objc public var hasExpirationStartTimestamp: Bool {
|
||||
return proto.hasExpirationStartTimestamp
|
||||
}
|
||||
|
||||
@objc public var isRecipientUpdate: Bool {
|
||||
return proto.isRecipientUpdate
|
||||
}
|
||||
@objc public var hasIsRecipientUpdate: Bool {
|
||||
return proto.hasIsRecipientUpdate
|
||||
}
|
||||
|
||||
private init(proto: SessionProtos_SyncMessage.Sent,
|
||||
message: SNProtoDataMessage?) {
|
||||
self.proto = proto
|
||||
self.message = message
|
||||
}
|
||||
|
||||
@objc
|
||||
public func serializedData() throws -> Data {
|
||||
return try self.proto.serializedData()
|
||||
}
|
||||
|
||||
@objc public class func parseData(_ serializedData: Data) throws -> SNProtoSyncMessageSent {
|
||||
let proto = try SessionProtos_SyncMessage.Sent(serializedData: serializedData)
|
||||
return try parseProto(proto)
|
||||
}
|
||||
|
||||
fileprivate class func parseProto(_ proto: SessionProtos_SyncMessage.Sent) throws -> SNProtoSyncMessageSent {
|
||||
var message: SNProtoDataMessage? = nil
|
||||
if proto.hasMessage {
|
||||
message = try SNProtoDataMessage.parseProto(proto.message)
|
||||
}
|
||||
|
||||
// MARK: - Begin Validation Logic for SNProtoSyncMessageSent -
|
||||
|
||||
// MARK: - End Validation Logic for SNProtoSyncMessageSent -
|
||||
|
||||
let result = SNProtoSyncMessageSent(proto: proto,
|
||||
message: message)
|
||||
return result
|
||||
}
|
||||
|
||||
@objc public override var debugDescription: String {
|
||||
return "\(proto)"
|
||||
}
|
||||
}
|
||||
|
||||
#if DEBUG
|
||||
|
||||
extension SNProtoSyncMessageSent {
|
||||
@objc public func serializedDataIgnoringErrors() -> Data? {
|
||||
return try! self.serializedData()
|
||||
}
|
||||
}
|
||||
|
||||
extension SNProtoSyncMessageSent.SNProtoSyncMessageSentBuilder {
|
||||
@objc public func buildIgnoringErrors() -> SNProtoSyncMessageSent? {
|
||||
return try! self.build()
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
// MARK: - SNProtoSyncMessage
|
||||
|
||||
@objc public class SNProtoSyncMessage: NSObject {
|
||||
|
||||
// MARK: - SNProtoSyncMessageBuilder
|
||||
|
||||
@objc public class func builder() -> SNProtoSyncMessageBuilder {
|
||||
return SNProtoSyncMessageBuilder()
|
||||
}
|
||||
|
||||
// asBuilder() constructs a builder that reflects the proto's contents.
|
||||
@objc public func asBuilder() -> SNProtoSyncMessageBuilder {
|
||||
let builder = SNProtoSyncMessageBuilder()
|
||||
if let _value = sent {
|
||||
builder.setSent(_value)
|
||||
}
|
||||
if let _value = padding {
|
||||
builder.setPadding(_value)
|
||||
}
|
||||
return builder
|
||||
}
|
||||
|
||||
@objc public class SNProtoSyncMessageBuilder: NSObject {
|
||||
|
||||
private var proto = SessionProtos_SyncMessage()
|
||||
|
||||
@objc fileprivate override init() {}
|
||||
|
||||
@objc public func setSent(_ valueParam: SNProtoSyncMessageSent) {
|
||||
proto.sent = valueParam.proto
|
||||
}
|
||||
|
||||
@objc public func setPadding(_ valueParam: Data) {
|
||||
proto.padding = valueParam
|
||||
}
|
||||
|
||||
@objc public func build() throws -> SNProtoSyncMessage {
|
||||
return try SNProtoSyncMessage.parseProto(proto)
|
||||
}
|
||||
|
||||
@objc public func buildSerializedData() throws -> Data {
|
||||
return try SNProtoSyncMessage.parseProto(proto).serializedData()
|
||||
}
|
||||
}
|
||||
|
||||
fileprivate let proto: SessionProtos_SyncMessage
|
||||
|
||||
@objc public let sent: SNProtoSyncMessageSent?
|
||||
|
||||
@objc public var padding: Data? {
|
||||
guard proto.hasPadding else {
|
||||
return nil
|
||||
}
|
||||
return proto.padding
|
||||
}
|
||||
@objc public var hasPadding: Bool {
|
||||
return proto.hasPadding
|
||||
}
|
||||
|
||||
private init(proto: SessionProtos_SyncMessage,
|
||||
sent: SNProtoSyncMessageSent?) {
|
||||
self.proto = proto
|
||||
self.sent = sent
|
||||
}
|
||||
|
||||
@objc
|
||||
public func serializedData() throws -> Data {
|
||||
return try self.proto.serializedData()
|
||||
}
|
||||
|
||||
@objc public class func parseData(_ serializedData: Data) throws -> SNProtoSyncMessage {
|
||||
let proto = try SessionProtos_SyncMessage(serializedData: serializedData)
|
||||
return try parseProto(proto)
|
||||
}
|
||||
|
||||
fileprivate class func parseProto(_ proto: SessionProtos_SyncMessage) throws -> SNProtoSyncMessage {
|
||||
var sent: SNProtoSyncMessageSent? = nil
|
||||
if proto.hasSent {
|
||||
sent = try SNProtoSyncMessageSent.parseProto(proto.sent)
|
||||
}
|
||||
|
||||
// MARK: - Begin Validation Logic for SNProtoSyncMessage -
|
||||
|
||||
// MARK: - End Validation Logic for SNProtoSyncMessage -
|
||||
|
||||
let result = SNProtoSyncMessage(proto: proto,
|
||||
sent: sent)
|
||||
return result
|
||||
}
|
||||
|
||||
@objc public override var debugDescription: String {
|
||||
return "\(proto)"
|
||||
}
|
||||
}
|
||||
|
||||
#if DEBUG
|
||||
|
||||
extension SNProtoSyncMessage {
|
||||
@objc public func serializedDataIgnoringErrors() -> Data? {
|
||||
return try! self.serializedData()
|
||||
}
|
||||
}
|
||||
|
||||
extension SNProtoSyncMessage.SNProtoSyncMessageBuilder {
|
||||
@objc public func buildIgnoringErrors() -> SNProtoSyncMessage? {
|
||||
return try! self.build()
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
// MARK: - SNProtoAttachmentPointer
|
||||
|
||||
@objc public class SNProtoAttachmentPointer: NSObject {
|
||||
|
|
|
@ -45,6 +45,15 @@ struct SessionProtos_Envelope {
|
|||
/// Clears the value of `source`. Subsequent reads from it will return its default value.
|
||||
mutating func clearSource() {self._source = nil}
|
||||
|
||||
var sourceDevice: UInt32 {
|
||||
get {return _sourceDevice ?? 0}
|
||||
set {_sourceDevice = newValue}
|
||||
}
|
||||
/// Returns true if `sourceDevice` has been explicitly set.
|
||||
var hasSourceDevice: Bool {return self._sourceDevice != nil}
|
||||
/// Clears the value of `sourceDevice`. Subsequent reads from it will return its default value.
|
||||
mutating func clearSourceDevice() {self._sourceDevice = nil}
|
||||
|
||||
/// @required
|
||||
var timestamp: UInt64 {
|
||||
get {return _timestamp ?? 0}
|
||||
|
@ -64,6 +73,15 @@ struct SessionProtos_Envelope {
|
|||
/// Clears the value of `content`. Subsequent reads from it will return its default value.
|
||||
mutating func clearContent() {self._content = nil}
|
||||
|
||||
var serverTimestamp: UInt64 {
|
||||
get {return _serverTimestamp ?? 0}
|
||||
set {_serverTimestamp = newValue}
|
||||
}
|
||||
/// Returns true if `serverTimestamp` has been explicitly set.
|
||||
var hasServerTimestamp: Bool {return self._serverTimestamp != nil}
|
||||
/// Clears the value of `serverTimestamp`. Subsequent reads from it will return its default value.
|
||||
mutating func clearServerTimestamp() {self._serverTimestamp = nil}
|
||||
|
||||
var unknownFields = SwiftProtobuf.UnknownStorage()
|
||||
|
||||
enum TypeEnum: SwiftProtobuf.Enum {
|
||||
|
@ -96,8 +114,10 @@ struct SessionProtos_Envelope {
|
|||
|
||||
fileprivate var _type: SessionProtos_Envelope.TypeEnum? = nil
|
||||
fileprivate var _source: String? = nil
|
||||
fileprivate var _sourceDevice: UInt32? = nil
|
||||
fileprivate var _timestamp: UInt64? = nil
|
||||
fileprivate var _content: Data? = nil
|
||||
fileprivate var _serverTimestamp: UInt64? = nil
|
||||
}
|
||||
|
||||
#if swift(>=4.2)
|
||||
|
@ -189,6 +209,15 @@ struct SessionProtos_Content {
|
|||
/// Clears the value of `dataMessage`. Subsequent reads from it will return its default value.
|
||||
mutating func clearDataMessage() {_uniqueStorage()._dataMessage = nil}
|
||||
|
||||
var syncMessage: SessionProtos_SyncMessage {
|
||||
get {return _storage._syncMessage ?? SessionProtos_SyncMessage()}
|
||||
set {_uniqueStorage()._syncMessage = newValue}
|
||||
}
|
||||
/// Returns true if `syncMessage` has been explicitly set.
|
||||
var hasSyncMessage: Bool {return _storage._syncMessage != nil}
|
||||
/// Clears the value of `syncMessage`. Subsequent reads from it will return its default value.
|
||||
mutating func clearSyncMessage() {_uniqueStorage()._syncMessage = nil}
|
||||
|
||||
var receiptMessage: SessionProtos_ReceiptMessage {
|
||||
get {return _storage._receiptMessage ?? SessionProtos_ReceiptMessage()}
|
||||
set {_uniqueStorage()._receiptMessage = newValue}
|
||||
|
@ -339,14 +368,14 @@ struct SessionProtos_DataMessage {
|
|||
/// Clears the value of `profile`. Subsequent reads from it will return its default value.
|
||||
mutating func clearProfile() {_uniqueStorage()._profile = nil}
|
||||
|
||||
var closedGroupUpdateV2: SessionProtos_DataMessage.ClosedGroupUpdateV2 {
|
||||
get {return _storage._closedGroupUpdateV2 ?? SessionProtos_DataMessage.ClosedGroupUpdateV2()}
|
||||
set {_uniqueStorage()._closedGroupUpdateV2 = newValue}
|
||||
var closedGroupControlMessage: SessionProtos_DataMessage.ClosedGroupControlMessage {
|
||||
get {return _storage._closedGroupControlMessage ?? SessionProtos_DataMessage.ClosedGroupControlMessage()}
|
||||
set {_uniqueStorage()._closedGroupControlMessage = newValue}
|
||||
}
|
||||
/// Returns true if `closedGroupUpdateV2` has been explicitly set.
|
||||
var hasClosedGroupUpdateV2: Bool {return _storage._closedGroupUpdateV2 != nil}
|
||||
/// Clears the value of `closedGroupUpdateV2`. Subsequent reads from it will return its default value.
|
||||
mutating func clearClosedGroupUpdateV2() {_uniqueStorage()._closedGroupUpdateV2 = nil}
|
||||
/// Returns true if `closedGroupControlMessage` has been explicitly set.
|
||||
var hasClosedGroupControlMessage: Bool {return _storage._closedGroupControlMessage != nil}
|
||||
/// Clears the value of `closedGroupControlMessage`. Subsequent reads from it will return its default value.
|
||||
mutating func clearClosedGroupControlMessage() {_uniqueStorage()._closedGroupControlMessage = nil}
|
||||
|
||||
var publicChatInfo: SessionProtos_PublicChatInfo {
|
||||
get {return _storage._publicChatInfo ?? SessionProtos_PublicChatInfo()}
|
||||
|
@ -1000,13 +1029,13 @@ struct SessionProtos_DataMessage {
|
|||
fileprivate var _profilePicture: String? = nil
|
||||
}
|
||||
|
||||
struct ClosedGroupUpdateV2 {
|
||||
struct ClosedGroupControlMessage {
|
||||
// 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 type: SessionProtos_DataMessage.ClosedGroupUpdateV2.TypeEnum {
|
||||
var type: SessionProtos_DataMessage.ClosedGroupControlMessage.TypeEnum {
|
||||
get {return _storage._type ?? .new}
|
||||
set {_uniqueStorage()._type = newValue}
|
||||
}
|
||||
|
@ -1033,8 +1062,8 @@ struct SessionProtos_DataMessage {
|
|||
/// Clears the value of `name`. Subsequent reads from it will return its default value.
|
||||
mutating func clearName() {_uniqueStorage()._name = nil}
|
||||
|
||||
var encryptionKeyPair: SessionProtos_DataMessage.ClosedGroupUpdateV2.KeyPair {
|
||||
get {return _storage._encryptionKeyPair ?? SessionProtos_DataMessage.ClosedGroupUpdateV2.KeyPair()}
|
||||
var encryptionKeyPair: SessionProtos_DataMessage.ClosedGroupControlMessage.KeyPair {
|
||||
get {return _storage._encryptionKeyPair ?? SessionProtos_DataMessage.ClosedGroupControlMessage.KeyPair()}
|
||||
set {_uniqueStorage()._encryptionKeyPair = newValue}
|
||||
}
|
||||
/// Returns true if `encryptionKeyPair` has been explicitly set.
|
||||
|
@ -1052,7 +1081,7 @@ struct SessionProtos_DataMessage {
|
|||
set {_uniqueStorage()._admins = newValue}
|
||||
}
|
||||
|
||||
var wrappers: [SessionProtos_DataMessage.ClosedGroupUpdateV2.KeyPairWrapper] {
|
||||
var wrappers: [SessionProtos_DataMessage.ClosedGroupControlMessage.KeyPairWrapper] {
|
||||
get {return _storage._wrappers}
|
||||
set {_uniqueStorage()._wrappers = newValue}
|
||||
}
|
||||
|
@ -1254,6 +1283,93 @@ extension SessionProtos_ReceiptMessage.TypeEnum: CaseIterable {
|
|||
|
||||
#endif // swift(>=4.2)
|
||||
|
||||
struct SessionProtos_SyncMessage {
|
||||
// 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 sent: SessionProtos_SyncMessage.Sent {
|
||||
get {return _storage._sent ?? SessionProtos_SyncMessage.Sent()}
|
||||
set {_uniqueStorage()._sent = newValue}
|
||||
}
|
||||
/// Returns true if `sent` has been explicitly set.
|
||||
var hasSent: Bool {return _storage._sent != nil}
|
||||
/// Clears the value of `sent`. Subsequent reads from it will return its default value.
|
||||
mutating func clearSent() {_uniqueStorage()._sent = nil}
|
||||
|
||||
var padding: Data {
|
||||
get {return _storage._padding ?? SwiftProtobuf.Internal.emptyData}
|
||||
set {_uniqueStorage()._padding = newValue}
|
||||
}
|
||||
/// Returns true if `padding` has been explicitly set.
|
||||
var hasPadding: Bool {return _storage._padding != nil}
|
||||
/// Clears the value of `padding`. Subsequent reads from it will return its default value.
|
||||
mutating func clearPadding() {_uniqueStorage()._padding = nil}
|
||||
|
||||
var unknownFields = SwiftProtobuf.UnknownStorage()
|
||||
|
||||
struct Sent {
|
||||
// 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 destination: String {
|
||||
get {return _storage._destination ?? String()}
|
||||
set {_uniqueStorage()._destination = newValue}
|
||||
}
|
||||
/// Returns true if `destination` has been explicitly set.
|
||||
var hasDestination: Bool {return _storage._destination != nil}
|
||||
/// Clears the value of `destination`. Subsequent reads from it will return its default value.
|
||||
mutating func clearDestination() {_uniqueStorage()._destination = nil}
|
||||
|
||||
var timestamp: UInt64 {
|
||||
get {return _storage._timestamp ?? 0}
|
||||
set {_uniqueStorage()._timestamp = newValue}
|
||||
}
|
||||
/// Returns true if `timestamp` has been explicitly set.
|
||||
var hasTimestamp: Bool {return _storage._timestamp != nil}
|
||||
/// Clears the value of `timestamp`. Subsequent reads from it will return its default value.
|
||||
mutating func clearTimestamp() {_uniqueStorage()._timestamp = nil}
|
||||
|
||||
var message: SessionProtos_DataMessage {
|
||||
get {return _storage._message ?? SessionProtos_DataMessage()}
|
||||
set {_uniqueStorage()._message = newValue}
|
||||
}
|
||||
/// Returns true if `message` has been explicitly set.
|
||||
var hasMessage: Bool {return _storage._message != nil}
|
||||
/// Clears the value of `message`. Subsequent reads from it will return its default value.
|
||||
mutating func clearMessage() {_uniqueStorage()._message = nil}
|
||||
|
||||
var expirationStartTimestamp: UInt64 {
|
||||
get {return _storage._expirationStartTimestamp ?? 0}
|
||||
set {_uniqueStorage()._expirationStartTimestamp = newValue}
|
||||
}
|
||||
/// Returns true if `expirationStartTimestamp` has been explicitly set.
|
||||
var hasExpirationStartTimestamp: Bool {return _storage._expirationStartTimestamp != nil}
|
||||
/// Clears the value of `expirationStartTimestamp`. Subsequent reads from it will return its default value.
|
||||
mutating func clearExpirationStartTimestamp() {_uniqueStorage()._expirationStartTimestamp = nil}
|
||||
|
||||
var isRecipientUpdate: Bool {
|
||||
get {return _storage._isRecipientUpdate ?? false}
|
||||
set {_uniqueStorage()._isRecipientUpdate = newValue}
|
||||
}
|
||||
/// Returns true if `isRecipientUpdate` has been explicitly set.
|
||||
var hasIsRecipientUpdate: Bool {return _storage._isRecipientUpdate != nil}
|
||||
/// Clears the value of `isRecipientUpdate`. Subsequent reads from it will return its default value.
|
||||
mutating func clearIsRecipientUpdate() {_uniqueStorage()._isRecipientUpdate = nil}
|
||||
|
||||
var unknownFields = SwiftProtobuf.UnknownStorage()
|
||||
|
||||
init() {}
|
||||
|
||||
fileprivate var _storage = _StorageClass.defaultInstance
|
||||
}
|
||||
|
||||
init() {}
|
||||
|
||||
fileprivate var _storage = _StorageClass.defaultInstance
|
||||
}
|
||||
|
||||
struct SessionProtos_AttachmentPointer {
|
||||
// SwiftProtobuf.Message conformance is added in an extension below. See the
|
||||
// `Message` and `Message+*Additions` files in the SwiftProtobuf library for
|
||||
|
@ -1784,8 +1900,10 @@ extension SessionProtos_Envelope: SwiftProtobuf.Message, SwiftProtobuf._MessageI
|
|||
static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
|
||||
1: .same(proto: "type"),
|
||||
2: .same(proto: "source"),
|
||||
7: .same(proto: "sourceDevice"),
|
||||
5: .same(proto: "timestamp"),
|
||||
8: .same(proto: "content"),
|
||||
10: .same(proto: "serverTimestamp"),
|
||||
]
|
||||
|
||||
public var isInitialized: Bool {
|
||||
|
@ -1799,7 +1917,9 @@ extension SessionProtos_Envelope: SwiftProtobuf.Message, SwiftProtobuf._MessageI
|
|||
case 1: try decoder.decodeSingularEnumField(value: &self._type)
|
||||
case 2: try decoder.decodeSingularStringField(value: &self._source)
|
||||
case 5: try decoder.decodeSingularUInt64Field(value: &self._timestamp)
|
||||
case 7: try decoder.decodeSingularUInt32Field(value: &self._sourceDevice)
|
||||
case 8: try decoder.decodeSingularBytesField(value: &self._content)
|
||||
case 10: try decoder.decodeSingularUInt64Field(value: &self._serverTimestamp)
|
||||
default: break
|
||||
}
|
||||
}
|
||||
|
@ -1815,17 +1935,25 @@ extension SessionProtos_Envelope: SwiftProtobuf.Message, SwiftProtobuf._MessageI
|
|||
if let v = self._timestamp {
|
||||
try visitor.visitSingularUInt64Field(value: v, fieldNumber: 5)
|
||||
}
|
||||
if let v = self._sourceDevice {
|
||||
try visitor.visitSingularUInt32Field(value: v, fieldNumber: 7)
|
||||
}
|
||||
if let v = self._content {
|
||||
try visitor.visitSingularBytesField(value: v, fieldNumber: 8)
|
||||
}
|
||||
if let v = self._serverTimestamp {
|
||||
try visitor.visitSingularUInt64Field(value: v, fieldNumber: 10)
|
||||
}
|
||||
try unknownFields.traverse(visitor: &visitor)
|
||||
}
|
||||
|
||||
static func ==(lhs: SessionProtos_Envelope, rhs: SessionProtos_Envelope) -> Bool {
|
||||
if lhs._type != rhs._type {return false}
|
||||
if lhs._source != rhs._source {return false}
|
||||
if lhs._sourceDevice != rhs._sourceDevice {return false}
|
||||
if lhs._timestamp != rhs._timestamp {return false}
|
||||
if lhs._content != rhs._content {return false}
|
||||
if lhs._serverTimestamp != rhs._serverTimestamp {return false}
|
||||
if lhs.unknownFields != rhs.unknownFields {return false}
|
||||
return true
|
||||
}
|
||||
|
@ -1884,12 +2012,14 @@ extension SessionProtos_Content: SwiftProtobuf.Message, SwiftProtobuf._MessageIm
|
|||
static let protoMessageName: String = _protobuf_package + ".Content"
|
||||
static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
|
||||
1: .same(proto: "dataMessage"),
|
||||
2: .same(proto: "syncMessage"),
|
||||
5: .same(proto: "receiptMessage"),
|
||||
6: .same(proto: "typingMessage"),
|
||||
]
|
||||
|
||||
fileprivate class _StorageClass {
|
||||
var _dataMessage: SessionProtos_DataMessage? = nil
|
||||
var _syncMessage: SessionProtos_SyncMessage? = nil
|
||||
var _receiptMessage: SessionProtos_ReceiptMessage? = nil
|
||||
var _typingMessage: SessionProtos_TypingMessage? = nil
|
||||
|
||||
|
@ -1899,6 +2029,7 @@ extension SessionProtos_Content: SwiftProtobuf.Message, SwiftProtobuf._MessageIm
|
|||
|
||||
init(copying source: _StorageClass) {
|
||||
_dataMessage = source._dataMessage
|
||||
_syncMessage = source._syncMessage
|
||||
_receiptMessage = source._receiptMessage
|
||||
_typingMessage = source._typingMessage
|
||||
}
|
||||
|
@ -1914,6 +2045,7 @@ extension SessionProtos_Content: SwiftProtobuf.Message, SwiftProtobuf._MessageIm
|
|||
public var isInitialized: Bool {
|
||||
return withExtendedLifetime(_storage) { (_storage: _StorageClass) in
|
||||
if let v = _storage._dataMessage, !v.isInitialized {return false}
|
||||
if let v = _storage._syncMessage, !v.isInitialized {return false}
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
@ -1924,6 +2056,7 @@ extension SessionProtos_Content: SwiftProtobuf.Message, SwiftProtobuf._MessageIm
|
|||
while let fieldNumber = try decoder.nextFieldNumber() {
|
||||
switch fieldNumber {
|
||||
case 1: try decoder.decodeSingularMessageField(value: &_storage._dataMessage)
|
||||
case 2: try decoder.decodeSingularMessageField(value: &_storage._syncMessage)
|
||||
case 5: try decoder.decodeSingularMessageField(value: &_storage._receiptMessage)
|
||||
case 6: try decoder.decodeSingularMessageField(value: &_storage._typingMessage)
|
||||
default: break
|
||||
|
@ -1937,6 +2070,9 @@ extension SessionProtos_Content: SwiftProtobuf.Message, SwiftProtobuf._MessageIm
|
|||
if let v = _storage._dataMessage {
|
||||
try visitor.visitSingularMessageField(value: v, fieldNumber: 1)
|
||||
}
|
||||
if let v = _storage._syncMessage {
|
||||
try visitor.visitSingularMessageField(value: v, fieldNumber: 2)
|
||||
}
|
||||
if let v = _storage._receiptMessage {
|
||||
try visitor.visitSingularMessageField(value: v, fieldNumber: 5)
|
||||
}
|
||||
|
@ -1953,6 +2089,7 @@ extension SessionProtos_Content: SwiftProtobuf.Message, SwiftProtobuf._MessageIm
|
|||
let _storage = _args.0
|
||||
let rhs_storage = _args.1
|
||||
if _storage._dataMessage != rhs_storage._dataMessage {return false}
|
||||
if _storage._syncMessage != rhs_storage._syncMessage {return false}
|
||||
if _storage._receiptMessage != rhs_storage._receiptMessage {return false}
|
||||
if _storage._typingMessage != rhs_storage._typingMessage {return false}
|
||||
return true
|
||||
|
@ -2013,7 +2150,7 @@ extension SessionProtos_DataMessage: SwiftProtobuf.Message, SwiftProtobuf._Messa
|
|||
9: .same(proto: "contact"),
|
||||
10: .same(proto: "preview"),
|
||||
101: .same(proto: "profile"),
|
||||
104: .same(proto: "closedGroupUpdateV2"),
|
||||
104: .same(proto: "closedGroupControlMessage"),
|
||||
999: .same(proto: "publicChatInfo"),
|
||||
]
|
||||
|
||||
|
@ -2029,7 +2166,7 @@ extension SessionProtos_DataMessage: SwiftProtobuf.Message, SwiftProtobuf._Messa
|
|||
var _contact: [SessionProtos_DataMessage.Contact] = []
|
||||
var _preview: [SessionProtos_DataMessage.Preview] = []
|
||||
var _profile: SessionProtos_DataMessage.LokiProfile? = nil
|
||||
var _closedGroupUpdateV2: SessionProtos_DataMessage.ClosedGroupUpdateV2? = nil
|
||||
var _closedGroupControlMessage: SessionProtos_DataMessage.ClosedGroupControlMessage? = nil
|
||||
var _publicChatInfo: SessionProtos_PublicChatInfo? = nil
|
||||
|
||||
static let defaultInstance = _StorageClass()
|
||||
|
@ -2048,7 +2185,7 @@ extension SessionProtos_DataMessage: SwiftProtobuf.Message, SwiftProtobuf._Messa
|
|||
_contact = source._contact
|
||||
_preview = source._preview
|
||||
_profile = source._profile
|
||||
_closedGroupUpdateV2 = source._closedGroupUpdateV2
|
||||
_closedGroupControlMessage = source._closedGroupControlMessage
|
||||
_publicChatInfo = source._publicChatInfo
|
||||
}
|
||||
}
|
||||
|
@ -2062,7 +2199,7 @@ extension SessionProtos_DataMessage: SwiftProtobuf.Message, SwiftProtobuf._Messa
|
|||
|
||||
public var isInitialized: Bool {
|
||||
return withExtendedLifetime(_storage) { (_storage: _StorageClass) in
|
||||
if let v = _storage._closedGroupUpdateV2, !v.isInitialized {return false}
|
||||
if let v = _storage._closedGroupControlMessage, !v.isInitialized {return false}
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
@ -2083,7 +2220,7 @@ extension SessionProtos_DataMessage: SwiftProtobuf.Message, SwiftProtobuf._Messa
|
|||
case 9: try decoder.decodeRepeatedMessageField(value: &_storage._contact)
|
||||
case 10: try decoder.decodeRepeatedMessageField(value: &_storage._preview)
|
||||
case 101: try decoder.decodeSingularMessageField(value: &_storage._profile)
|
||||
case 104: try decoder.decodeSingularMessageField(value: &_storage._closedGroupUpdateV2)
|
||||
case 104: try decoder.decodeSingularMessageField(value: &_storage._closedGroupControlMessage)
|
||||
case 999: try decoder.decodeSingularMessageField(value: &_storage._publicChatInfo)
|
||||
default: break
|
||||
}
|
||||
|
@ -2126,7 +2263,7 @@ extension SessionProtos_DataMessage: SwiftProtobuf.Message, SwiftProtobuf._Messa
|
|||
if let v = _storage._profile {
|
||||
try visitor.visitSingularMessageField(value: v, fieldNumber: 101)
|
||||
}
|
||||
if let v = _storage._closedGroupUpdateV2 {
|
||||
if let v = _storage._closedGroupControlMessage {
|
||||
try visitor.visitSingularMessageField(value: v, fieldNumber: 104)
|
||||
}
|
||||
if let v = _storage._publicChatInfo {
|
||||
|
@ -2152,7 +2289,7 @@ extension SessionProtos_DataMessage: SwiftProtobuf.Message, SwiftProtobuf._Messa
|
|||
if _storage._contact != rhs_storage._contact {return false}
|
||||
if _storage._preview != rhs_storage._preview {return false}
|
||||
if _storage._profile != rhs_storage._profile {return false}
|
||||
if _storage._closedGroupUpdateV2 != rhs_storage._closedGroupUpdateV2 {return false}
|
||||
if _storage._closedGroupControlMessage != rhs_storage._closedGroupControlMessage {return false}
|
||||
if _storage._publicChatInfo != rhs_storage._publicChatInfo {return false}
|
||||
return true
|
||||
}
|
||||
|
@ -2833,8 +2970,8 @@ extension SessionProtos_DataMessage.LokiProfile: SwiftProtobuf.Message, SwiftPro
|
|||
}
|
||||
}
|
||||
|
||||
extension SessionProtos_DataMessage.ClosedGroupUpdateV2: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
|
||||
static let protoMessageName: String = SessionProtos_DataMessage.protoMessageName + ".ClosedGroupUpdateV2"
|
||||
extension SessionProtos_DataMessage.ClosedGroupControlMessage: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
|
||||
static let protoMessageName: String = SessionProtos_DataMessage.protoMessageName + ".ClosedGroupControlMessage"
|
||||
static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
|
||||
1: .same(proto: "type"),
|
||||
2: .same(proto: "publicKey"),
|
||||
|
@ -2846,13 +2983,13 @@ extension SessionProtos_DataMessage.ClosedGroupUpdateV2: SwiftProtobuf.Message,
|
|||
]
|
||||
|
||||
fileprivate class _StorageClass {
|
||||
var _type: SessionProtos_DataMessage.ClosedGroupUpdateV2.TypeEnum? = nil
|
||||
var _type: SessionProtos_DataMessage.ClosedGroupControlMessage.TypeEnum? = nil
|
||||
var _publicKey: Data? = nil
|
||||
var _name: String? = nil
|
||||
var _encryptionKeyPair: SessionProtos_DataMessage.ClosedGroupUpdateV2.KeyPair? = nil
|
||||
var _encryptionKeyPair: SessionProtos_DataMessage.ClosedGroupControlMessage.KeyPair? = nil
|
||||
var _members: [Data] = []
|
||||
var _admins: [Data] = []
|
||||
var _wrappers: [SessionProtos_DataMessage.ClosedGroupUpdateV2.KeyPairWrapper] = []
|
||||
var _wrappers: [SessionProtos_DataMessage.ClosedGroupControlMessage.KeyPairWrapper] = []
|
||||
|
||||
static let defaultInstance = _StorageClass()
|
||||
|
||||
|
@ -2930,7 +3067,7 @@ extension SessionProtos_DataMessage.ClosedGroupUpdateV2: SwiftProtobuf.Message,
|
|||
try unknownFields.traverse(visitor: &visitor)
|
||||
}
|
||||
|
||||
static func ==(lhs: SessionProtos_DataMessage.ClosedGroupUpdateV2, rhs: SessionProtos_DataMessage.ClosedGroupUpdateV2) -> Bool {
|
||||
static func ==(lhs: SessionProtos_DataMessage.ClosedGroupControlMessage, rhs: SessionProtos_DataMessage.ClosedGroupControlMessage) -> Bool {
|
||||
if lhs._storage !== rhs._storage {
|
||||
let storagesAreEqual: Bool = withExtendedLifetime((lhs._storage, rhs._storage)) { (_args: (_StorageClass, _StorageClass)) in
|
||||
let _storage = _args.0
|
||||
|
@ -2951,7 +3088,7 @@ extension SessionProtos_DataMessage.ClosedGroupUpdateV2: SwiftProtobuf.Message,
|
|||
}
|
||||
}
|
||||
|
||||
extension SessionProtos_DataMessage.ClosedGroupUpdateV2.TypeEnum: SwiftProtobuf._ProtoNameProviding {
|
||||
extension SessionProtos_DataMessage.ClosedGroupControlMessage.TypeEnum: SwiftProtobuf._ProtoNameProviding {
|
||||
static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
|
||||
1: .same(proto: "NEW"),
|
||||
2: .same(proto: "UPDATE"),
|
||||
|
@ -2963,8 +3100,8 @@ extension SessionProtos_DataMessage.ClosedGroupUpdateV2.TypeEnum: SwiftProtobuf.
|
|||
]
|
||||
}
|
||||
|
||||
extension SessionProtos_DataMessage.ClosedGroupUpdateV2.KeyPair: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
|
||||
static let protoMessageName: String = SessionProtos_DataMessage.ClosedGroupUpdateV2.protoMessageName + ".KeyPair"
|
||||
extension SessionProtos_DataMessage.ClosedGroupControlMessage.KeyPair: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
|
||||
static let protoMessageName: String = SessionProtos_DataMessage.ClosedGroupControlMessage.protoMessageName + ".KeyPair"
|
||||
static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
|
||||
1: .same(proto: "publicKey"),
|
||||
2: .same(proto: "privateKey"),
|
||||
|
@ -2996,7 +3133,7 @@ extension SessionProtos_DataMessage.ClosedGroupUpdateV2.KeyPair: SwiftProtobuf.M
|
|||
try unknownFields.traverse(visitor: &visitor)
|
||||
}
|
||||
|
||||
static func ==(lhs: SessionProtos_DataMessage.ClosedGroupUpdateV2.KeyPair, rhs: SessionProtos_DataMessage.ClosedGroupUpdateV2.KeyPair) -> Bool {
|
||||
static func ==(lhs: SessionProtos_DataMessage.ClosedGroupControlMessage.KeyPair, rhs: SessionProtos_DataMessage.ClosedGroupControlMessage.KeyPair) -> Bool {
|
||||
if lhs._publicKey != rhs._publicKey {return false}
|
||||
if lhs._privateKey != rhs._privateKey {return false}
|
||||
if lhs.unknownFields != rhs.unknownFields {return false}
|
||||
|
@ -3004,8 +3141,8 @@ extension SessionProtos_DataMessage.ClosedGroupUpdateV2.KeyPair: SwiftProtobuf.M
|
|||
}
|
||||
}
|
||||
|
||||
extension SessionProtos_DataMessage.ClosedGroupUpdateV2.KeyPairWrapper: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
|
||||
static let protoMessageName: String = SessionProtos_DataMessage.ClosedGroupUpdateV2.protoMessageName + ".KeyPairWrapper"
|
||||
extension SessionProtos_DataMessage.ClosedGroupControlMessage.KeyPairWrapper: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
|
||||
static let protoMessageName: String = SessionProtos_DataMessage.ClosedGroupControlMessage.protoMessageName + ".KeyPairWrapper"
|
||||
static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
|
||||
1: .same(proto: "publicKey"),
|
||||
2: .same(proto: "encryptedKeyPair"),
|
||||
|
@ -3037,7 +3174,7 @@ extension SessionProtos_DataMessage.ClosedGroupUpdateV2.KeyPairWrapper: SwiftPro
|
|||
try unknownFields.traverse(visitor: &visitor)
|
||||
}
|
||||
|
||||
static func ==(lhs: SessionProtos_DataMessage.ClosedGroupUpdateV2.KeyPairWrapper, rhs: SessionProtos_DataMessage.ClosedGroupUpdateV2.KeyPairWrapper) -> Bool {
|
||||
static func ==(lhs: SessionProtos_DataMessage.ClosedGroupControlMessage.KeyPairWrapper, rhs: SessionProtos_DataMessage.ClosedGroupControlMessage.KeyPairWrapper) -> Bool {
|
||||
if lhs._publicKey != rhs._publicKey {return false}
|
||||
if lhs._encryptedKeyPair != rhs._encryptedKeyPair {return false}
|
||||
if lhs.unknownFields != rhs.unknownFields {return false}
|
||||
|
@ -3087,6 +3224,182 @@ extension SessionProtos_ReceiptMessage.TypeEnum: SwiftProtobuf._ProtoNameProvidi
|
|||
]
|
||||
}
|
||||
|
||||
extension SessionProtos_SyncMessage: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
|
||||
static let protoMessageName: String = _protobuf_package + ".SyncMessage"
|
||||
static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
|
||||
1: .same(proto: "sent"),
|
||||
8: .same(proto: "padding"),
|
||||
]
|
||||
|
||||
fileprivate class _StorageClass {
|
||||
var _sent: SessionProtos_SyncMessage.Sent? = nil
|
||||
var _padding: Data? = nil
|
||||
|
||||
static let defaultInstance = _StorageClass()
|
||||
|
||||
private init() {}
|
||||
|
||||
init(copying source: _StorageClass) {
|
||||
_sent = source._sent
|
||||
_padding = source._padding
|
||||
}
|
||||
}
|
||||
|
||||
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._sent, !v.isInitialized {return false}
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
|
||||
_ = _uniqueStorage()
|
||||
try withExtendedLifetime(_storage) { (_storage: _StorageClass) in
|
||||
while let fieldNumber = try decoder.nextFieldNumber() {
|
||||
switch fieldNumber {
|
||||
case 1: try decoder.decodeSingularMessageField(value: &_storage._sent)
|
||||
case 8: try decoder.decodeSingularBytesField(value: &_storage._padding)
|
||||
default: break
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
|
||||
try withExtendedLifetime(_storage) { (_storage: _StorageClass) in
|
||||
if let v = _storage._sent {
|
||||
try visitor.visitSingularMessageField(value: v, fieldNumber: 1)
|
||||
}
|
||||
if let v = _storage._padding {
|
||||
try visitor.visitSingularBytesField(value: v, fieldNumber: 8)
|
||||
}
|
||||
}
|
||||
try unknownFields.traverse(visitor: &visitor)
|
||||
}
|
||||
|
||||
static func ==(lhs: SessionProtos_SyncMessage, rhs: SessionProtos_SyncMessage) -> 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._sent != rhs_storage._sent {return false}
|
||||
if _storage._padding != rhs_storage._padding {return false}
|
||||
return true
|
||||
}
|
||||
if !storagesAreEqual {return false}
|
||||
}
|
||||
if lhs.unknownFields != rhs.unknownFields {return false}
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
extension SessionProtos_SyncMessage.Sent: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
|
||||
static let protoMessageName: String = SessionProtos_SyncMessage.protoMessageName + ".Sent"
|
||||
static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
|
||||
1: .same(proto: "destination"),
|
||||
2: .same(proto: "timestamp"),
|
||||
3: .same(proto: "message"),
|
||||
4: .same(proto: "expirationStartTimestamp"),
|
||||
6: .same(proto: "isRecipientUpdate"),
|
||||
]
|
||||
|
||||
fileprivate class _StorageClass {
|
||||
var _destination: String? = nil
|
||||
var _timestamp: UInt64? = nil
|
||||
var _message: SessionProtos_DataMessage? = nil
|
||||
var _expirationStartTimestamp: UInt64? = nil
|
||||
var _isRecipientUpdate: Bool? = nil
|
||||
|
||||
static let defaultInstance = _StorageClass()
|
||||
|
||||
private init() {}
|
||||
|
||||
init(copying source: _StorageClass) {
|
||||
_destination = source._destination
|
||||
_timestamp = source._timestamp
|
||||
_message = source._message
|
||||
_expirationStartTimestamp = source._expirationStartTimestamp
|
||||
_isRecipientUpdate = source._isRecipientUpdate
|
||||
}
|
||||
}
|
||||
|
||||
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._message, !v.isInitialized {return false}
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
|
||||
_ = _uniqueStorage()
|
||||
try withExtendedLifetime(_storage) { (_storage: _StorageClass) in
|
||||
while let fieldNumber = try decoder.nextFieldNumber() {
|
||||
switch fieldNumber {
|
||||
case 1: try decoder.decodeSingularStringField(value: &_storage._destination)
|
||||
case 2: try decoder.decodeSingularUInt64Field(value: &_storage._timestamp)
|
||||
case 3: try decoder.decodeSingularMessageField(value: &_storage._message)
|
||||
case 4: try decoder.decodeSingularUInt64Field(value: &_storage._expirationStartTimestamp)
|
||||
case 6: try decoder.decodeSingularBoolField(value: &_storage._isRecipientUpdate)
|
||||
default: break
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
|
||||
try withExtendedLifetime(_storage) { (_storage: _StorageClass) in
|
||||
if let v = _storage._destination {
|
||||
try visitor.visitSingularStringField(value: v, fieldNumber: 1)
|
||||
}
|
||||
if let v = _storage._timestamp {
|
||||
try visitor.visitSingularUInt64Field(value: v, fieldNumber: 2)
|
||||
}
|
||||
if let v = _storage._message {
|
||||
try visitor.visitSingularMessageField(value: v, fieldNumber: 3)
|
||||
}
|
||||
if let v = _storage._expirationStartTimestamp {
|
||||
try visitor.visitSingularUInt64Field(value: v, fieldNumber: 4)
|
||||
}
|
||||
if let v = _storage._isRecipientUpdate {
|
||||
try visitor.visitSingularBoolField(value: v, fieldNumber: 6)
|
||||
}
|
||||
}
|
||||
try unknownFields.traverse(visitor: &visitor)
|
||||
}
|
||||
|
||||
static func ==(lhs: SessionProtos_SyncMessage.Sent, rhs: SessionProtos_SyncMessage.Sent) -> 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._destination != rhs_storage._destination {return false}
|
||||
if _storage._timestamp != rhs_storage._timestamp {return false}
|
||||
if _storage._message != rhs_storage._message {return false}
|
||||
if _storage._expirationStartTimestamp != rhs_storage._expirationStartTimestamp {return false}
|
||||
if _storage._isRecipientUpdate != rhs_storage._isRecipientUpdate {return false}
|
||||
return true
|
||||
}
|
||||
if !storagesAreEqual {return false}
|
||||
}
|
||||
if lhs.unknownFields != rhs.unknownFields {return false}
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
extension SessionProtos_AttachmentPointer: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
|
||||
static let protoMessageName: String = _protobuf_package + ".AttachmentPointer"
|
||||
static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
|
||||
|
|
|
@ -14,9 +14,11 @@ message Envelope {
|
|||
// @required
|
||||
required Type type = 1;
|
||||
optional string source = 2;
|
||||
optional uint32 sourceDevice = 7;
|
||||
// @required
|
||||
optional uint64 timestamp = 5;
|
||||
optional bytes content = 8;
|
||||
optional uint64 serverTimestamp = 10;
|
||||
}
|
||||
|
||||
message TypingMessage {
|
||||
|
@ -33,9 +35,10 @@ message TypingMessage {
|
|||
}
|
||||
|
||||
message Content {
|
||||
optional DataMessage dataMessage = 1;
|
||||
optional ReceiptMessage receiptMessage = 5;
|
||||
optional TypingMessage typingMessage = 6;
|
||||
optional DataMessage dataMessage = 1;
|
||||
optional SyncMessage syncMessage = 2;
|
||||
optional ReceiptMessage receiptMessage = 5;
|
||||
optional TypingMessage typingMessage = 6;
|
||||
}
|
||||
|
||||
message ClosedGroupCiphertextMessageWrapper {
|
||||
|
@ -156,7 +159,7 @@ message DataMessage {
|
|||
optional string profilePicture = 2;
|
||||
}
|
||||
|
||||
message ClosedGroupUpdateV2 {
|
||||
message ClosedGroupControlMessage {
|
||||
|
||||
enum Type {
|
||||
NEW = 1; // publicKey, name, encryptionKeyPair, members, admins
|
||||
|
@ -192,19 +195,19 @@ message DataMessage {
|
|||
repeated KeyPairWrapper wrappers = 7;
|
||||
}
|
||||
|
||||
optional string body = 1;
|
||||
repeated AttachmentPointer attachments = 2;
|
||||
optional GroupContext group = 3;
|
||||
optional uint32 flags = 4;
|
||||
optional uint32 expireTimer = 5;
|
||||
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 ClosedGroupUpdateV2 closedGroupUpdateV2 = 104;
|
||||
optional PublicChatInfo publicChatInfo = 999;
|
||||
optional string body = 1;
|
||||
repeated AttachmentPointer attachments = 2;
|
||||
optional GroupContext group = 3;
|
||||
optional uint32 flags = 4;
|
||||
optional uint32 expireTimer = 5;
|
||||
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;
|
||||
optional PublicChatInfo publicChatInfo = 999;
|
||||
}
|
||||
|
||||
message ReceiptMessage {
|
||||
|
@ -219,6 +222,20 @@ message ReceiptMessage {
|
|||
repeated uint64 timestamp = 2;
|
||||
}
|
||||
|
||||
message SyncMessage {
|
||||
|
||||
message Sent {
|
||||
optional string destination = 1;
|
||||
optional uint64 timestamp = 2;
|
||||
optional DataMessage message = 3;
|
||||
optional uint64 expirationStartTimestamp = 4;
|
||||
optional bool isRecipientUpdate = 6 [default = false];
|
||||
}
|
||||
|
||||
optional Sent sent = 1;
|
||||
optional bytes padding = 8;
|
||||
}
|
||||
|
||||
message AttachmentPointer {
|
||||
|
||||
enum Flags {
|
||||
|
|
|
@ -11,7 +11,7 @@ extension MessageReceiver {
|
|||
switch message {
|
||||
case let message as ReadReceipt: handleReadReceipt(message, using: transaction)
|
||||
case let message as TypingIndicator: handleTypingIndicator(message, using: transaction)
|
||||
case let message as ClosedGroupUpdate: handleClosedGroupUpdateV2(message, using: transaction)
|
||||
case let message as ClosedGroupControlMessage: handleClosedGroupControlMessage(message, using: transaction)
|
||||
case let message as ExpirationTimerUpdate: handleExpirationTimerUpdate(message, using: transaction)
|
||||
case let message as VisibleMessage: try handleVisibleMessage(message, associatedWithProto: proto, openGroupID: openGroupID, isBackgroundPoll: isBackgroundPoll, using: transaction)
|
||||
default: fatalError()
|
||||
|
@ -226,15 +226,19 @@ extension MessageReceiver {
|
|||
return tsIncomingMessageID
|
||||
}
|
||||
|
||||
private static func handleClosedGroupUpdateV2(_ message: ClosedGroupUpdate, using transaction: Any) {
|
||||
private static func handleClosedGroupControlMessage(_ message: ClosedGroupControlMessage, using transaction: Any) {
|
||||
switch message.kind! {
|
||||
case .new: handleNewGroupV2(message, using: transaction)
|
||||
case .update: handleGroupUpdateV2(message, using: transaction)
|
||||
case .encryptionKeyPair: handleGroupEncryptionKeyPair(message, using: transaction)
|
||||
case .new: handleNewClosedGroup(message, using: transaction)
|
||||
case .update: handleClosedGroupUpdated(message, using: transaction)
|
||||
case .encryptionKeyPair: handleClosedGroupEncryptionKeyPair(message, using: transaction)
|
||||
case .nameChange: handleClosedGroupNameChanged(message, using: transaction)
|
||||
case .usersAdded: handleClosedGroupMembersAdded(message, using: transaction)
|
||||
case .usersRemoved: handleClosedGroupMembersRemoved(message, using: transaction)
|
||||
case .userLeft: handleClosedGroupMemberLeft(message, using: transaction)
|
||||
}
|
||||
}
|
||||
|
||||
private static func handleNewGroupV2(_ message: ClosedGroupUpdate, using transaction: Any) {
|
||||
private static func handleNewClosedGroup(_ message: ClosedGroupControlMessage, using transaction: Any) {
|
||||
// Prepare
|
||||
guard case let .new(publicKeyAsData, name, encryptionKeyPair, membersAsData, adminsAsData) = message.kind else { return }
|
||||
let transaction = transaction as! YapDatabaseReadWriteTransaction
|
||||
|
@ -264,7 +268,7 @@ extension MessageReceiver {
|
|||
infoMessage.save(with: transaction)
|
||||
}
|
||||
|
||||
private static func handleGroupUpdateV2(_ message: ClosedGroupUpdate, using transaction: Any) {
|
||||
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
|
||||
|
@ -323,7 +327,7 @@ extension MessageReceiver {
|
|||
}
|
||||
}
|
||||
|
||||
private static func handleGroupEncryptionKeyPair(_ message: ClosedGroupUpdate, using transaction: Any) {
|
||||
private static func handleClosedGroupEncryptionKeyPair(_ message: ClosedGroupControlMessage, using transaction: Any) {
|
||||
// Prepare
|
||||
guard case let .encryptionKeyPair(wrappers) = message.kind, let groupPublicKey = message.groupPublicKey else { return }
|
||||
let transaction = transaction as! YapDatabaseReadWriteTransaction
|
||||
|
@ -348,9 +352,9 @@ extension MessageReceiver {
|
|||
return SNLog("Couldn't decrypt closed group encryption key pair.")
|
||||
}
|
||||
// Parse it
|
||||
let proto: SNProtoDataMessageClosedGroupUpdateV2KeyPair
|
||||
let proto: SNProtoDataMessageClosedGroupControlMessageKeyPair
|
||||
do {
|
||||
proto = try SNProtoDataMessageClosedGroupUpdateV2KeyPair.parseData(plaintext)
|
||||
proto = try SNProtoDataMessageClosedGroupControlMessageKeyPair.parseData(plaintext)
|
||||
} catch {
|
||||
return SNLog("Couldn't parse closed group encryption key pair.")
|
||||
}
|
||||
|
@ -364,4 +368,20 @@ extension MessageReceiver {
|
|||
Storage.shared.addClosedGroupEncryptionKeyPair(keyPair, for: groupPublicKey, using: transaction)
|
||||
SNLog("Received a new closed group encryption key pair.")
|
||||
}
|
||||
|
||||
private static func handleClosedGroupNameChanged(_ message: ClosedGroupControlMessage, using transaction: Any) {
|
||||
|
||||
}
|
||||
|
||||
private static func handleClosedGroupMembersAdded(_ message: ClosedGroupControlMessage, using transaction: Any) {
|
||||
|
||||
}
|
||||
|
||||
private static func handleClosedGroupMembersRemoved(_ message: ClosedGroupControlMessage, using transaction: Any) {
|
||||
|
||||
}
|
||||
|
||||
private static func handleClosedGroupMemberLeft(_ message: ClosedGroupControlMessage, using transaction: Any) {
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -109,7 +109,7 @@ public enum MessageReceiver {
|
|||
let message: Message? = {
|
||||
if let readReceipt = ReadReceipt.fromProto(proto) { return readReceipt }
|
||||
if let typingIndicator = TypingIndicator.fromProto(proto) { return typingIndicator }
|
||||
if let closedGroupUpdate = ClosedGroupUpdate.fromProto(proto) { return closedGroupUpdate }
|
||||
if let closedGroupControlMessage = ClosedGroupControlMessage.fromProto(proto) { return closedGroupControlMessage }
|
||||
if let expirationTimerUpdate = ExpirationTimerUpdate.fromProto(proto) { return expirationTimerUpdate }
|
||||
if let visibleMessage = VisibleMessage.fromProto(proto) { return visibleMessage }
|
||||
return nil
|
||||
|
|
|
@ -3,7 +3,7 @@ import SessionProtocolKit
|
|||
|
||||
extension MessageSender {
|
||||
|
||||
public static func createV2ClosedGroup(name: String, members: Set<String>, transaction: YapDatabaseReadWriteTransaction) -> Promise<TSGroupThread> {
|
||||
public static func createClosedGroup(name: String, members: Set<String>, transaction: YapDatabaseReadWriteTransaction) -> Promise<TSGroupThread> {
|
||||
// Prepare
|
||||
var members = members
|
||||
let userPublicKey = getUserHexEncodedPublicKey()
|
||||
|
@ -27,10 +27,10 @@ extension MessageSender {
|
|||
guard member != userPublicKey else { continue }
|
||||
let thread = TSContactThread.getOrCreateThread(withContactId: member, transaction: transaction)
|
||||
thread.save(with: transaction)
|
||||
let closedGroupUpdateKind = ClosedGroupUpdate.Kind.new(publicKey: Data(hex: groupPublicKey), name: name,
|
||||
let closedGroupControlMessageKind = ClosedGroupControlMessage.Kind.new(publicKey: Data(hex: groupPublicKey), name: name,
|
||||
encryptionKeyPair: encryptionKeyPair, members: membersAsData, admins: adminsAsData)
|
||||
let closedGroupUpdate = ClosedGroupUpdate(kind: closedGroupUpdateKind)
|
||||
let promise = MessageSender.sendNonDurably(closedGroupUpdate, in: thread, using: transaction)
|
||||
let closedGroupControlMessage = ClosedGroupControlMessage(kind: closedGroupControlMessageKind)
|
||||
let promise = MessageSender.sendNonDurably(closedGroupControlMessage, in: thread, using: transaction)
|
||||
promises.append(promise)
|
||||
}
|
||||
// Add the group to the user's set of public keys to poll for
|
||||
|
@ -46,7 +46,7 @@ extension MessageSender {
|
|||
return when(fulfilled: promises).map2 { thread }
|
||||
}
|
||||
|
||||
public static func updateV2(_ groupPublicKey: String, with members: Set<String>, name: String, transaction: YapDatabaseReadWriteTransaction) throws {
|
||||
public static func update(_ groupPublicKey: String, with members: Set<String>, name: String, transaction: YapDatabaseReadWriteTransaction) throws {
|
||||
// Prepare
|
||||
let userPublicKey = getUserHexEncodedPublicKey()
|
||||
let groupID = LKGroupUtilities.getEncodedClosedGroupIDAsData(groupPublicKey)
|
||||
|
@ -81,9 +81,9 @@ extension MessageSender {
|
|||
}
|
||||
}
|
||||
// Send the update to the group
|
||||
let mainClosedGroupUpdate = ClosedGroupUpdate(kind: .update(name: name, members: membersAsData))
|
||||
let mainClosedGroupControlMessage = ClosedGroupControlMessage(kind: .update(name: name, members: membersAsData))
|
||||
if isUserLeaving {
|
||||
let _ = MessageSender.sendNonDurably(mainClosedGroupUpdate, in: thread, using: transaction).done {
|
||||
let _ = MessageSender.sendNonDurably(mainClosedGroupControlMessage, in: thread, using: transaction).done {
|
||||
SNMessagingKitConfiguration.shared.storage.write { transaction in
|
||||
// Remove the group from the database and unsubscribe from PNs
|
||||
Storage.shared.removeAllClosedGroupEncryptionKeyPairs(for: groupPublicKey, using: transaction)
|
||||
|
@ -92,7 +92,7 @@ extension MessageSender {
|
|||
}
|
||||
}
|
||||
} else {
|
||||
MessageSender.send(mainClosedGroupUpdate, in: thread, using: transaction)
|
||||
MessageSender.send(mainClosedGroupControlMessage, in: thread, using: transaction)
|
||||
// Generate and distribute a new encryption key pair if needed
|
||||
if wasAnyUserRemoved && isCurrentUserAdmin {
|
||||
try generateAndSendNewEncryptionKeyPair(for: groupPublicKey, to: members.subtracting(newMembers), using: transaction)
|
||||
|
@ -101,10 +101,10 @@ extension MessageSender {
|
|||
for member in newMembers {
|
||||
let thread = TSContactThread.getOrCreateThread(withContactId: member, transaction: transaction)
|
||||
thread.save(with: transaction)
|
||||
let closedGroupUpdateKind = ClosedGroupUpdate.Kind.new(publicKey: Data(hex: groupPublicKey), name: name,
|
||||
let closedGroupControlMessageKind = ClosedGroupControlMessage.Kind.new(publicKey: Data(hex: groupPublicKey), name: name,
|
||||
encryptionKeyPair: encryptionKeyPair, members: membersAsData, admins: adminsAsData)
|
||||
let closedGroupUpdate = ClosedGroupUpdate(kind: closedGroupUpdateKind)
|
||||
MessageSender.send(closedGroupUpdate, in: thread, using: transaction)
|
||||
let closedGroupControlMessage = ClosedGroupControlMessage(kind: closedGroupControlMessageKind)
|
||||
MessageSender.send(closedGroupControlMessage, in: thread, using: transaction)
|
||||
}
|
||||
}
|
||||
// Update the group
|
||||
|
@ -117,7 +117,7 @@ extension MessageSender {
|
|||
}
|
||||
|
||||
@objc(leaveClosedGroupWithPublicKey:using:error:)
|
||||
public static func leaveV2(_ groupPublicKey: String, using transaction: YapDatabaseReadWriteTransaction) throws {
|
||||
public static func leave(_ groupPublicKey: String, using transaction: YapDatabaseReadWriteTransaction) throws {
|
||||
let groupID = LKGroupUtilities.getEncodedClosedGroupIDAsData(groupPublicKey)
|
||||
let threadID = TSGroupThread.threadId(fromGroupId: groupID)
|
||||
guard let thread = TSGroupThread.fetch(uniqueId: threadID, transaction: transaction) else {
|
||||
|
@ -133,7 +133,7 @@ extension MessageSender {
|
|||
} else {
|
||||
newMembers = [] // If the admin leaves the group is destroyed
|
||||
}
|
||||
return try updateV2(groupPublicKey, with: newMembers, name: group.groupName!, transaction: transaction)
|
||||
return try update(groupPublicKey, with: newMembers, name: group.groupName!, transaction: transaction)
|
||||
}
|
||||
|
||||
public static func generateAndSendNewEncryptionKeyPair(for groupPublicKey: String, to targetMembers: Set<String>, using transaction: Any) throws {
|
||||
|
@ -152,15 +152,15 @@ extension MessageSender {
|
|||
// Generate the new encryption key pair
|
||||
let newKeyPair = Curve25519.generateKeyPair()
|
||||
// Distribute it
|
||||
let proto = try SNProtoDataMessageClosedGroupUpdateV2KeyPair.builder(publicKey: newKeyPair.publicKey,
|
||||
let proto = try SNProtoDataMessageClosedGroupControlMessageKeyPair.builder(publicKey: newKeyPair.publicKey,
|
||||
privateKey: newKeyPair.privateKey).build()
|
||||
let plaintext = try proto.serializedData()
|
||||
let wrappers = try targetMembers.compactMap { publicKey -> ClosedGroupUpdate.KeyPairWrapper in
|
||||
let wrappers = try targetMembers.compactMap { publicKey -> ClosedGroupControlMessage.KeyPairWrapper in
|
||||
let ciphertext = try MessageSender.encryptWithSessionProtocol(plaintext, for: publicKey)
|
||||
return ClosedGroupUpdate.KeyPairWrapper(publicKey: publicKey, encryptedKeyPair: ciphertext)
|
||||
return ClosedGroupControlMessage.KeyPairWrapper(publicKey: publicKey, encryptedKeyPair: ciphertext)
|
||||
}
|
||||
let closedGroupUpdate = ClosedGroupUpdate(kind: .encryptionKeyPair(wrappers))
|
||||
let _ = MessageSender.sendNonDurably(closedGroupUpdate, in: thread, using: transaction).done { // FIXME: It'd be great if we could make this a durable operation
|
||||
let closedGroupControlMessage = ClosedGroupControlMessage(kind: .encryptionKeyPair(wrappers))
|
||||
let _ = MessageSender.sendNonDurably(closedGroupControlMessage, in: thread, using: transaction).done { // FIXME: It'd be great if we could make this a durable operation
|
||||
// Store it * after * having sent out the message to the group
|
||||
SNMessagingKitConfiguration.shared.storage.write { transaction in
|
||||
Storage.shared.addClosedGroupEncryptionKeyPair(newKeyPair, for: groupPublicKey, using: transaction)
|
||||
|
|
|
@ -242,7 +242,7 @@ public final class MessageSender : NSObject {
|
|||
storage.write(with: { transaction in
|
||||
MessageSender.handleSuccessfulMessageSend(message, to: destination, using: transaction)
|
||||
var shouldNotify = (message is VisibleMessage)
|
||||
if let closedGroupUpdate = message as? ClosedGroupUpdate, case .new = closedGroupUpdate.kind {
|
||||
if let closedGroupControlMessage = message as? ClosedGroupControlMessage, case .new = closedGroupControlMessage.kind {
|
||||
shouldNotify = true
|
||||
}
|
||||
if shouldNotify {
|
||||
|
|
|
@ -15,10 +15,6 @@ typedef NS_ENUM(NSUInteger, OWSVerificationState) {
|
|||
@class SNProtoVerified;
|
||||
|
||||
NSString *OWSVerificationStateToString(OWSVerificationState verificationState);
|
||||
SNProtoVerified *_Nullable BuildVerifiedProtoWithRecipientId(NSString *destinationRecipientId,
|
||||
NSData *identityKey,
|
||||
OWSVerificationState verificationState,
|
||||
NSUInteger paddingBytesLength);
|
||||
|
||||
@interface OWSRecipientIdentity : TSYapDatabaseObject
|
||||
|
||||
|
|
|
@ -23,45 +23,6 @@ NSString *OWSVerificationStateToString(OWSVerificationState verificationState)
|
|||
}
|
||||
}
|
||||
|
||||
SNProtoVerifiedState OWSVerificationStateToProtoState(OWSVerificationState verificationState)
|
||||
{
|
||||
switch (verificationState) {
|
||||
case OWSVerificationStateDefault:
|
||||
return SNProtoVerifiedStateDefault;
|
||||
case OWSVerificationStateVerified:
|
||||
return SNProtoVerifiedStateVerified;
|
||||
case OWSVerificationStateNoLongerVerified:
|
||||
return SNProtoVerifiedStateUnverified;
|
||||
}
|
||||
}
|
||||
|
||||
SNProtoVerified *_Nullable BuildVerifiedProtoWithRecipientId(NSString *destinationRecipientId,
|
||||
NSData *identityKey,
|
||||
OWSVerificationState verificationState,
|
||||
NSUInteger paddingBytesLength)
|
||||
{
|
||||
|
||||
SNProtoVerifiedBuilder *verifiedBuilder = [SNProtoVerified builderWithDestination:destinationRecipientId];
|
||||
verifiedBuilder.identityKey = identityKey;
|
||||
verifiedBuilder.state = OWSVerificationStateToProtoState(verificationState);
|
||||
|
||||
if (paddingBytesLength > 0) {
|
||||
// We add the same amount of padding in the VerificationStateSync message and it's coresponding NullMessage so
|
||||
// that the sync message is indistinguishable from an outgoing Sent transcript corresponding to the NullMessage.
|
||||
// We pad the NullMessage so as to obscure it's content. The sync message (like all sync messages) will be
|
||||
// *additionally* padded by the superclass while being sent. The end result is we send a NullMessage of a
|
||||
// non-distinct size, and a verification sync which is ~1-512 bytes larger then that.
|
||||
verifiedBuilder.nullMessage = [Cryptography generateRandomBytes:paddingBytesLength];
|
||||
}
|
||||
|
||||
NSError *error;
|
||||
SNProtoVerified *_Nullable verifiedProto = [verifiedBuilder buildAndReturnError:&error];
|
||||
if (error || !verifiedProto) {
|
||||
return nil;
|
||||
}
|
||||
return verifiedProto;
|
||||
}
|
||||
|
||||
@interface OWSRecipientIdentity ()
|
||||
|
||||
@property (atomic) OWSVerificationState verificationState;
|
||||
|
|
|
@ -45,15 +45,6 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
[dataMessageBuilder setProfileKey:self.localProfileKey.keyData];
|
||||
}
|
||||
|
||||
+ (void)addLocalProfileKeyIfNecessary:(TSThread *)thread
|
||||
recipientId:(NSString *)recipientId
|
||||
callMessageBuilder:(SNProtoCallMessageBuilder *)callMessageBuilder
|
||||
{
|
||||
if ([self shouldMessageHaveLocalProfileKey:thread recipientId:recipientId]) {
|
||||
[callMessageBuilder setProfileKey:self.localProfileKey.keyData];
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
|
@ -53,10 +53,10 @@ public final class NotificationServiceExtension : UNNotificationServiceExtension
|
|||
group.groupModel.groupType == .closedGroup { // Should always be true because we don't get PNs for open groups
|
||||
senderDisplayName = String(format: NotificationStrings.incomingGroupMessageTitleFormat, senderDisplayName, group.groupModel.groupName ?? MessageStrings.newGroupDefaultTitle)
|
||||
}
|
||||
case let closedGroupUpdate as ClosedGroupUpdate:
|
||||
case let closedGroupControlMessage as ClosedGroupControlMessage:
|
||||
// TODO: We could consider actually handling the update here. Not sure if there's enough time though, seeing as though
|
||||
// in some cases we need to send messages (e.g. our sender key) to a number of other users.
|
||||
switch closedGroupUpdate.kind {
|
||||
switch closedGroupControlMessage.kind {
|
||||
case .new(_, let name, _, _, _): snippet = "\(senderDisplayName) added you to \(name)"
|
||||
default: return self.handleFailure(for: notificationContent)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue