Add analytics for Room Moderation. (#2571)

* Add an option to use analytics locally.

* Add analytics for Room Moderation.

* Update tests.

* Include the role in the event where appropriate.

* Update the AnalyticsEvents package.
This commit is contained in:
Doug
2024-03-14 15:55:37 +00:00
committed by GitHub
parent d2a9db874d
commit c68ec2c382
26 changed files with 185 additions and 60 deletions
@@ -592,10 +592,12 @@ class RoomFlowCoordinator: FlowCoordinatorProtocol {
fatalError()
}
let params = RoomMembersListScreenCoordinatorParameters(mediaProvider: userSession.mediaProvider,
roomProxy: roomProxy,
appSettings: appSettings)
let coordinator = RoomMembersListScreenCoordinator(parameters: params)
let parameters = RoomMembersListScreenCoordinatorParameters(mediaProvider: userSession.mediaProvider,
roomProxy: roomProxy,
userIndicatorController: userIndicatorController,
appSettings: appSettings,
analytics: analytics)
let coordinator = RoomMembersListScreenCoordinator(parameters: parameters)
coordinator.actions
.sink { [weak self] action in
@@ -1176,7 +1178,8 @@ class RoomFlowCoordinator: FlowCoordinatorProtocol {
let parameters = RoomRolesAndPermissionsFlowCoordinatorParameters(roomProxy: roomProxy,
navigationStackCoordinator: navigationStackCoordinator,
userIndicatorController: userIndicatorController)
userIndicatorController: userIndicatorController,
analytics: analytics)
let coordinator = RoomRolesAndPermissionsFlowCoordinator(parameters: parameters)
coordinator.actionsPublisher.sink { [weak self] action in
switch action {
@@ -27,12 +27,14 @@ struct RoomRolesAndPermissionsFlowCoordinatorParameters {
let roomProxy: RoomProxyProtocol
let navigationStackCoordinator: NavigationStackCoordinator
let userIndicatorController: UserIndicatorControllerProtocol
let analytics: AnalyticsService
}
class RoomRolesAndPermissionsFlowCoordinator: FlowCoordinatorProtocol {
private let roomProxy: RoomProxyProtocol
private let navigationStackCoordinator: NavigationStackCoordinator
private let userIndicatorController: UserIndicatorControllerProtocol
private let analytics: AnalyticsService
enum State: StateType {
/// The state machine hasn't started.
@@ -74,6 +76,7 @@ class RoomRolesAndPermissionsFlowCoordinator: FlowCoordinatorProtocol {
roomProxy = parameters.roomProxy
navigationStackCoordinator = parameters.navigationStackCoordinator
userIndicatorController = parameters.userIndicatorController
analytics = parameters.analytics
stateMachine = .init(state: .initial)
configureStateMachine()
@@ -132,7 +135,9 @@ class RoomRolesAndPermissionsFlowCoordinator: FlowCoordinatorProtocol {
}
private func presentRolesAndPermissionsScreen() {
let parameters = RoomRolesAndPermissionsScreenCoordinatorParameters(roomProxy: roomProxy, userIndicatorController: userIndicatorController)
let parameters = RoomRolesAndPermissionsScreenCoordinatorParameters(roomProxy: roomProxy,
userIndicatorController: userIndicatorController,
analytics: analytics)
let coordinator = RoomRolesAndPermissionsScreenCoordinator(parameters: parameters)
coordinator.actionsPublisher.sink { [stateMachine] action in
switch action {
@@ -159,7 +164,8 @@ class RoomRolesAndPermissionsFlowCoordinator: FlowCoordinatorProtocol {
let parameters = RoomChangeRolesScreenCoordinatorParameters(mode: mode,
roomProxy: roomProxy,
userIndicatorController: userIndicatorController)
userIndicatorController: userIndicatorController,
analytics: analytics)
let coordinator = RoomChangeRolesScreenCoordinator(parameters: parameters)
coordinator.actionsPublisher.sink { [weak self] action in
guard let self else { return }
@@ -180,7 +186,8 @@ class RoomRolesAndPermissionsFlowCoordinator: FlowCoordinatorProtocol {
let parameters = RoomChangePermissionsScreenCoordinatorParameters(permissions: permissions,
permissionsGroup: group,
roomProxy: roomProxy,
userIndicatorController: userIndicatorController)
userIndicatorController: userIndicatorController,
analytics: analytics)
let coordinator = RoomChangePermissionsScreenCoordinator(parameters: parameters)
coordinator.actionsPublisher.sink { [weak self] action in
guard let self else { return }