Merge branch 'feature/5393_matomo_tracking_for_federation' into 'develop'

Feature/5393 matomo tracking for federation

See merge request bwmessenger/bundesmessenger/bundesmessenger-ios!330
This commit is contained in:
Frank Rotermund
2024-03-05 09:50:32 +00:00
6 changed files with 76 additions and 0 deletions

View File

@@ -65,6 +65,17 @@ import MatrixSDK
}
return isFederated
}
func isRoomCurrentlyFederated(completion: ((_ isFederated: Bool) -> Void)?) {
self.getCurrentRoomServerACLSettings { serverACL in
if let serverACL = serverACL {
if serverACL.elementsEqual("*") {
completion?(true)
}
}
completion?(false)
}
}
func isRoomMemberFederated(_ userId: String) -> Bool {
var isFederated: Bool = false
@@ -80,6 +91,21 @@ import MatrixSDK
return isFederated
}
// bwi #5395 am i a federated member
func amiFederated() -> Bool {
var isFederated: Bool = false
// Check if the room is from the same homeserver
if let myUserId = self.mxSession.myUser.userId {
let roomUserIdComponents = self.roomId.components(separatedBy: ":")
let myUserIdComponents = myUserId.components(separatedBy: ":")
if roomUserIdComponents.count == 2 && myUserIdComponents.count == 2
&& roomUserIdComponents.last != myUserIdComponents.last {
isFederated = true
}
}
return isFederated
}
// Get "isFederated" flag for room, default == true
func getFederatedFlag(completion: ((_ isFederated: Bool) -> Void)?) {
state { state in

View File

@@ -177,6 +177,13 @@ struct RoomFederationDecisionView: View {
isUpdatingServerACLs = false
// #5578 show alert on success if room is federated
if (response.isSuccess) {
// bwi #5393 tracking, use the buildSettig here to avoid admin calculation if not necessary
if BWIBuildSettings.shared.bwiMatomoEnabled {
BWIAnalyticsHelper().getRoomAdminCount(room: room) { (adminCount) in
BWIAnalytics.sharedTracker.trackEvent(category: "Federation", action: "ShowSettingFederateRoom", name: isFederated ? "accept" : "decline", number: NSNumber(value: adminCount))
}
}
if (isFederated) {
showSuccessAlert = true
showAlert = true

View File

@@ -105,4 +105,28 @@ import MatrixSDK
return "mehr als 2500"
}
}
@objc func getRoomAdminCount(room: MXRoom, completion: @escaping(Int) -> ()) {
room.state { (state) in
room.members { roomMembers in
var noOfAdmins = 0
let powerLevels = state?.powerLevels
for member in roomMembers?.joinedMembers ?? [MXRoomMember]() {
if let powerLevel = powerLevels?.powerLevelOfUser(withUserID: member.userId) {
if powerLevel >= 100 {
noOfAdmins += 1
}
}
}
completion(noOfAdmins)
} lazyLoadedMembers: { _ in
completion(0)
} failure: { error in
MXLog.error("[RoomAnalyticsHelper] Failed loading room", context: error)
completion(0)
}
}
}
}