Feature/5327 releaseprep

This commit is contained in:
Frank Rotermund
2023-11-21 06:33:20 +00:00
parent 28efc685ad
commit 8a54552ffa
11 changed files with 91 additions and 26 deletions
+27 -13
View File
@@ -17,24 +17,38 @@
import Foundation
import MatrixSDK
@objc class BWIAnalyticsHelper: NSObject {
@objc static let shared = BWIAnalyticsHelper()
@objc static func getRoomDeviceCount(room: MXRoom, completion: @escaping(Int) -> ()) {
room.members { roomMembers in
var noOfDevices = 0
for member in roomMembers?.joinedMembers ?? [MXRoomMember]() {
noOfDevices += room.mxSession.crypto.devices(forUser: member.userId).count
private let serialQueue = DispatchQueue(label: "de.bwi.analyticshelper.serialQueue")
@objc func getRoomDeviceCount(room: MXRoom, completion: @escaping(Int) -> ()) {
// only ask for devices per room if a refresh is needed -> room.mxSession.crypto.devices is costly in large rooms. And even with that performance win don't do it on Mainthread
serialQueue.async {
if LazyRoomDevices.shared.areDevicesCurrent(room: room) {
completion(LazyRoomDevices.shared.deviceCount(room: room))
return
}
room.members { roomMembers in
var noOfDevices = 0
for member in roomMembers?.joinedMembers ?? [MXRoomMember]() {
noOfDevices += room.mxSession.crypto.devices(forUser: member.userId).count
}
LazyRoomDevices.shared.setDeviceCount(room: room, deviceCount: noOfDevices)
completion(noOfDevices)
} lazyLoadedMembers: { _ in
completion(0)
} failure: { error in
MXLog.error("[RoomAnalyticsHelper] Failed loading room", context: error)
completion(0)
}
completion(noOfDevices)
} lazyLoadedMembers: { _ in
completion(0)
} failure: { error in
MXLog.error("[RoomAnalyticsHelper] Failed loading room", context: error)
completion(0)
}
}
@objc static func getForwardingType(event: MXEvent) -> String? {
@objc func getForwardingType(event: MXEvent) -> String? {
guard let messageType: MXMessageType = event.messageType else {
return nil
}
@@ -66,7 +80,7 @@ import MatrixSDK
// MARK: custom dimensions
@objc static func dimensionForDeviceCount(_ deviceCount: Int) -> String {
@objc func dimensionForDeviceCount(_ deviceCount: Int) -> String {
if deviceCount <= 0 {
return "Undefiniert"
}