|
|
|
@ -14,6 +14,9 @@ public final class SessionManagementProtocol : NSObject {
|
|
|
|
|
|
|
|
|
|
internal static var storage: OWSPrimaryStorage { OWSPrimaryStorage.shared() }
|
|
|
|
|
|
|
|
|
|
/// The session requests that are currently being handled.
|
|
|
|
|
public static var inFlightSessionRequests: Set<String> = []
|
|
|
|
|
|
|
|
|
|
// MARK: - General
|
|
|
|
|
// BEHAVIOR NOTE: OWSMessageSender.throws_encryptedMessageForMessageSend:recipientId:plaintext:transaction: sets
|
|
|
|
|
// isFriendRequest to true if the message in question is a friend request or a device linking request, but NOT if
|
|
|
|
@ -192,6 +195,7 @@ public final class SessionManagementProtocol : NSObject {
|
|
|
|
|
public static func handleSessionRequestMessage(_ dataMessage: SSKProtoDataMessage, wrappedIn envelope: SSKProtoEnvelope, using transaction: YapDatabaseReadWriteTransaction) {
|
|
|
|
|
// The envelope source is set during UD decryption
|
|
|
|
|
let hexEncodedPublicKey = envelope.source!
|
|
|
|
|
inFlightSessionRequests.insert(hexEncodedPublicKey)
|
|
|
|
|
var closedGroupMembers: Set<String> = []
|
|
|
|
|
TSGroupThread.enumerateCollectionObjects(with: transaction) { object, _ in
|
|
|
|
|
guard let group = object as? TSGroupThread, group.groupModel.groupType == .closedGroup,
|
|
|
|
@ -208,6 +212,7 @@ public final class SessionManagementProtocol : NSObject {
|
|
|
|
|
let ephemeralMessage = EphemeralMessage(in: thread)
|
|
|
|
|
let messageSenderJobQueue = SSKEnvironment.shared.messageSenderJobQueue
|
|
|
|
|
messageSenderJobQueue.add(message: ephemeralMessage, transaction: transaction)
|
|
|
|
|
inFlightSessionRequests.remove(hexEncodedPublicKey)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|