From 96bfd780ded74a1b2683da8887eae495841cc662 Mon Sep 17 00:00:00 2001 From: Johannes Marbach Date: Mon, 19 Jun 2023 14:35:58 +0200 Subject: [PATCH] Add analytics tracking for room creation (#1100) --- .../Sources/Screens/CreateRoom/CreateRoomViewModel.swift | 1 + .../Sources/Screens/CreateRoom/View/CreateRoomScreen.swift | 1 + .../Screens/StartChatScreen/StartChatScreenViewModel.swift | 1 + .../Screens/StartChatScreen/View/StartChatScreen.swift | 1 + ElementX/Sources/Services/Analytics/Analytics.swift | 6 ++++++ changelog.d/pr-1100.feature | 1 + 6 files changed, 11 insertions(+) create mode 100644 changelog.d/pr-1100.feature diff --git a/ElementX/Sources/Screens/CreateRoom/CreateRoomViewModel.swift b/ElementX/Sources/Screens/CreateRoom/CreateRoomViewModel.swift index 430f84a69..f94ad5863 100644 --- a/ElementX/Sources/Screens/CreateRoom/CreateRoomViewModel.swift +++ b/ElementX/Sources/Screens/CreateRoom/CreateRoomViewModel.swift @@ -156,6 +156,7 @@ class CreateRoomViewModel: CreateRoomViewModelType, CreateRoomViewModelProtocol userIDs: state.selectedUsers.map(\.userID), avatarURL: avatarURL) { case .success(let roomId): + ServiceLocator.shared.analytics.trackCreatedRoom(isDM: false) actionsSubject.send(.openRoom(withIdentifier: roomId)) case .failure(let failure): displayError(failure) diff --git a/ElementX/Sources/Screens/CreateRoom/View/CreateRoomScreen.swift b/ElementX/Sources/Screens/CreateRoom/View/CreateRoomScreen.swift index b7a635465..2964737ca 100644 --- a/ElementX/Sources/Screens/CreateRoom/View/CreateRoomScreen.swift +++ b/ElementX/Sources/Screens/CreateRoom/View/CreateRoomScreen.swift @@ -32,6 +32,7 @@ struct CreateRoomScreen: View { securitySection } .elementFormStyle() + .track(screen: .createRoom) .scrollDismissesKeyboard(.immediately) .navigationTitle(L10n.screenCreateRoomTitle) .navigationBarTitleDisplayMode(.inline) diff --git a/ElementX/Sources/Screens/StartChatScreen/StartChatScreenViewModel.swift b/ElementX/Sources/Screens/StartChatScreen/StartChatScreenViewModel.swift index c9b8cdf54..39c741f96 100644 --- a/ElementX/Sources/Screens/StartChatScreen/StartChatScreenViewModel.swift +++ b/ElementX/Sources/Screens/StartChatScreen/StartChatScreenViewModel.swift @@ -133,6 +133,7 @@ class StartChatScreenViewModel: StartChatScreenViewModelType, StartChatScreenVie showLoadingIndicator() switch await clientProxy.createDirectRoom(with: user.userID, expectedRoomName: user.displayName) { case .success(let roomId): + ServiceLocator.shared.analytics.trackCreatedRoom(isDM: true) actionsSubject.send(.openRoom(withIdentifier: roomId)) case .failure(let failure): displayError(failure) diff --git a/ElementX/Sources/Screens/StartChatScreen/View/StartChatScreen.swift b/ElementX/Sources/Screens/StartChatScreen/View/StartChatScreen.swift index 5f629932f..9548ed208 100644 --- a/ElementX/Sources/Screens/StartChatScreen/View/StartChatScreen.swift +++ b/ElementX/Sources/Screens/StartChatScreen/View/StartChatScreen.swift @@ -29,6 +29,7 @@ struct StartChatScreen: View { } } .elementFormStyle() + .track(screen: .startChat) .scrollDismissesKeyboard(.immediately) .navigationTitle(L10n.actionStartChat) .navigationBarTitleDisplayMode(.inline) diff --git a/ElementX/Sources/Services/Analytics/Analytics.swift b/ElementX/Sources/Services/Analytics/Analytics.swift index 4701bf93d..868d924fc 100644 --- a/ElementX/Sources/Services/Analytics/Analytics.swift +++ b/ElementX/Sources/Services/Analytics/Analytics.swift @@ -125,4 +125,10 @@ extension Analytics { let event = AnalyticsEvent.MobileScreen(durationMs: milliseconds, screenName: screen.screenName) client.screen(event) } + + /// Track the creation of a room + /// - Parameter isDM: true if the created room is a direct message, false otherwise + func trackCreatedRoom(isDM: Bool) { + capture(event: AnalyticsEvent.CreatedRoom(isDM: isDM)) + } } diff --git a/changelog.d/pr-1100.feature b/changelog.d/pr-1100.feature new file mode 100644 index 000000000..7ea6f2bde --- /dev/null +++ b/changelog.d/pr-1100.feature @@ -0,0 +1 @@ +Add analytics tracking for room creation