Fix missing device link fetch
This commit is contained in:
parent
0fb2e33b61
commit
d0abad32f4
|
@ -182,22 +182,25 @@ public final class SessionManagementProtocol : NSObject {
|
|||
@objc(handleSessionRequestMessage:wrappedIn:using:)
|
||||
public static func handleSessionRequestMessage(_ dataMessage: SSKProtoDataMessage, wrappedIn envelope: SSKProtoEnvelope, using transaction: YapDatabaseReadWriteTransaction) {
|
||||
// The envelope source is set during UD decryption
|
||||
// FIXME: Device links should probably update here if they're out of date
|
||||
let hexEncodedPublicKey = envelope.source!
|
||||
var validHEPKs: Set<String> = []
|
||||
var closedGroupMembers: Set<String> = []
|
||||
TSGroupThread.enumerateCollectionObjects(with: transaction) { object, _ in
|
||||
guard let group = object as? TSGroupThread, group.groupModel.groupType == .closedGroup,
|
||||
group.shouldThreadBeVisible else { return }
|
||||
let closedGroupMembersIncludingLinkedDevices = group.groupModel.groupMemberIds.flatMap {
|
||||
LokiDatabaseUtilities.getLinkedDeviceHexEncodedPublicKeys(for: $0, in: transaction)
|
||||
}
|
||||
validHEPKs.formUnion(closedGroupMembersIncludingLinkedDevices)
|
||||
closedGroupMembers.formUnion(group.groupModel.groupMemberIds)
|
||||
}
|
||||
LokiFileServerAPI.getDeviceLinks(associatedWith: closedGroupMembers).ensure {
|
||||
storage.dbReadWriteConnection.readWrite { transaction in
|
||||
let validHEPKs = closedGroupMembers.flatMap {
|
||||
LokiDatabaseUtilities.getLinkedDeviceHexEncodedPublicKeys(for: $0, in: transaction)
|
||||
}
|
||||
guard validHEPKs.contains(hexEncodedPublicKey) else { return }
|
||||
let thread = TSContactThread.getOrCreateThread(withContactId: hexEncodedPublicKey, transaction: transaction)
|
||||
let ephemeralMessage = EphemeralMessage(in: thread)
|
||||
let messageSenderJobQueue = SSKEnvironment.shared.messageSenderJobQueue
|
||||
messageSenderJobQueue.add(message: ephemeralMessage, transaction: transaction)
|
||||
}
|
||||
}
|
||||
guard validHEPKs.contains(hexEncodedPublicKey) else { return }
|
||||
let thread = TSContactThread.getOrCreateThread(withContactId: hexEncodedPublicKey, transaction: transaction)
|
||||
let ephemeralMessage = EphemeralMessage(in: thread)
|
||||
let messageSenderJobQueue = SSKEnvironment.shared.messageSenderJobQueue
|
||||
messageSenderJobQueue.add(message: ephemeralMessage, transaction: transaction)
|
||||
}
|
||||
|
||||
// TODO: This needs an explanation of when we expect pre key bundles to be attached
|
||||
|
|
Loading…
Reference in New Issue