mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-04-17 23:18:27 +02:00
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:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user