Instrument missing screen metrics (#5764)

* Instrument missing screen metrics

- Done
This commit is contained in:
Gil Eluard
2022-03-08 10:13:46 +01:00
committed by GitHub
parent 35a330c74e
commit acf7d0de13
56 changed files with 269 additions and 246 deletions
@@ -32,6 +32,7 @@ import AnalyticsEvents
case searchPeople
case searchFiles
case room
case roomPreview
case roomDetails
case roomMembers
case user
@@ -47,11 +48,16 @@ import AnalyticsEvents
case settingsSecurity
case settingsDefaultNotifications
case settingsMentionsAndKeywords
case settingsNotifications
case deactivateAccount
case group
case myGroups
case inviteFriends
case threadList
case spaceMenu
case spaceMembers
case spaceExploreRooms
case dialpad
/// The screen name reported to the AnalyticsEvent.
var screenName: AnalyticsEvent.MobileScreen.ScreenName {
@@ -90,6 +96,8 @@ import AnalyticsEvents
return .RoomMembers
case .user:
return .User
case .roomPreview:
return .RoomPreview
case .roomSearch:
return .RoomSearch
case .roomUploads:
@@ -114,6 +122,8 @@ import AnalyticsEvents
return .SettingsDefaultNotifications
case .settingsMentionsAndKeywords:
return .SettingsMentionsAndKeywords
case .settingsNotifications:
return .SettingsNotifications
case .deactivateAccount:
return .DeactivateAccount
case .group:
@@ -124,6 +134,14 @@ import AnalyticsEvents
return .InviteFriends
case .threadList:
return .ThreadList
case .spaceMenu:
return .SpaceMenu
case .spaceMembers:
return .SpaceMembers
case .spaceExploreRooms:
return .SpaceExploreRooms
case .dialpad:
return .Dialpad
}
}
}
@@ -0,0 +1,49 @@
//
// Copyright 2021 New Vector Ltd
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
import Foundation
/// An object to report the screen's display to the `Analytics` object.
@objcMembers class AnalyticsScreenTracker: NSObject {
// MARK: - Properties
/// The screen being tracked.
private let screen: AnalyticsScreen
// MARK: - Setup
/// Create a new screen tracker for the specified screen.
/// - Parameter screen: The screen that should be reported.
init(screen: AnalyticsScreen) {
self.screen = screen
super.init()
}
// MARK: - Public
/// Send screen event without duration
func trackScreen() {
Analytics.shared.trackScreen(screen)
}
// MARK: static method
static func trackScreen(_ screen: AnalyticsScreen) {
Analytics.shared.trackScreen(screen)
}
}