mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-03 16:10:20 +00:00
Fix a crash experienced when trying to report a crash. (#3086)
This commit is contained in:
@@ -112,10 +112,10 @@ class AppCoordinator: AppCoordinatorProtocol, AuthenticationFlowCoordinatorDeleg
|
|||||||
notificationManager = NotificationManager(notificationCenter: UNUserNotificationCenter.current(),
|
notificationManager = NotificationManager(notificationCenter: UNUserNotificationCenter.current(),
|
||||||
appSettings: appSettings)
|
appSettings: appSettings)
|
||||||
|
|
||||||
|
Self.setupServiceLocator(appSettings: appSettings, appHooks: appHooks)
|
||||||
Self.setupSentry(appSettings: appSettings)
|
Self.setupSentry(appSettings: appSettings)
|
||||||
|
|
||||||
Self.setupServiceLocator(appSettings: appSettings, appHooks: appHooks)
|
ServiceLocator.shared.analytics.signpost.start()
|
||||||
|
|
||||||
ServiceLocator.shared.analytics.startIfEnabled()
|
ServiceLocator.shared.analytics.startIfEnabled()
|
||||||
|
|
||||||
windowManager.delegate = self
|
windowManager.delegate = self
|
||||||
|
|||||||
@@ -40,9 +40,14 @@ class Signposter {
|
|||||||
static let subsystem = "ElementX"
|
static let subsystem = "ElementX"
|
||||||
static let category = "PerformanceTests"
|
static let category = "PerformanceTests"
|
||||||
|
|
||||||
private var appStartupTransaction: Span
|
// MARK: - App Startup
|
||||||
|
|
||||||
init() {
|
private var appStartupTransaction: Span?
|
||||||
|
|
||||||
|
// We have a manual start method because we need to configure the ServiceLocator *before* we configure
|
||||||
|
// Sentry but this class is created in the AnalyticsService and so spans and transactions are dropped
|
||||||
|
// until Sentry has been configured. Therefore doing this in the init doesn't work.
|
||||||
|
func start() {
|
||||||
appStartupTransaction = SentrySDK.startTransaction(name: Name.appStartup, operation: Name.appStarted)
|
appStartupTransaction = SentrySDK.startTransaction(name: Name.appStartup, operation: Name.appStarted)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -55,7 +60,7 @@ class Signposter {
|
|||||||
func beginLogin() {
|
func beginLogin() {
|
||||||
loginState = signposter.beginInterval(Name.login)
|
loginState = signposter.beginInterval(Name.login)
|
||||||
loginTransaction = SentrySDK.startTransaction(name: "\(Name.login)", operation: "\(Name.login)")
|
loginTransaction = SentrySDK.startTransaction(name: "\(Name.login)", operation: "\(Name.login)")
|
||||||
loginSpan = appStartupTransaction.startChild(operation: "\(Name.login)", description: "\(Name.login)")
|
loginSpan = appStartupTransaction?.startChild(operation: "\(Name.login)", description: "\(Name.login)")
|
||||||
}
|
}
|
||||||
|
|
||||||
func endLogin() {
|
func endLogin() {
|
||||||
@@ -80,14 +85,14 @@ class Signposter {
|
|||||||
private var firstSyncSpan: Span?
|
private var firstSyncSpan: Span?
|
||||||
|
|
||||||
func beginFirstSync(serverName: String) {
|
func beginFirstSync(serverName: String) {
|
||||||
appStartupTransaction.setTag(value: serverName, key: Name.homeserver)
|
appStartupTransaction?.setTag(value: serverName, key: Name.homeserver)
|
||||||
|
|
||||||
firstSyncState = signposter.beginInterval(Name.firstSync)
|
firstSyncState = signposter.beginInterval(Name.firstSync)
|
||||||
|
|
||||||
firstSyncTransaction = SentrySDK.startTransaction(name: "\(Name.firstSync)", operation: "\(Name.firstSync)")
|
firstSyncTransaction = SentrySDK.startTransaction(name: "\(Name.firstSync)", operation: "\(Name.firstSync)")
|
||||||
firstSyncTransaction?.setTag(value: serverName, key: Name.homeserver)
|
firstSyncTransaction?.setTag(value: serverName, key: Name.homeserver)
|
||||||
|
|
||||||
firstSyncSpan = appStartupTransaction.startChild(operation: "\(Name.firstSync)", description: "\(Name.firstSync)")
|
firstSyncSpan = appStartupTransaction?.startChild(operation: "\(Name.firstSync)", description: "\(Name.firstSync)")
|
||||||
}
|
}
|
||||||
|
|
||||||
func endFirstSync() {
|
func endFirstSync() {
|
||||||
@@ -111,12 +116,12 @@ class Signposter {
|
|||||||
func beginFirstRooms() {
|
func beginFirstRooms() {
|
||||||
firstRoomsState = signposter.beginInterval(Name.firstRooms)
|
firstRoomsState = signposter.beginInterval(Name.firstRooms)
|
||||||
firstRoomsTransaction = SentrySDK.startTransaction(name: "\(Name.firstRooms)", operation: "\(Name.firstRooms)")
|
firstRoomsTransaction = SentrySDK.startTransaction(name: "\(Name.firstRooms)", operation: "\(Name.firstRooms)")
|
||||||
firstRoomsSpan = appStartupTransaction.startChild(operation: "\(Name.firstRooms)", description: "\(Name.firstRooms)")
|
firstRoomsSpan = appStartupTransaction?.startChild(operation: "\(Name.firstRooms)", description: "\(Name.firstRooms)")
|
||||||
}
|
}
|
||||||
|
|
||||||
func endFirstRooms() {
|
func endFirstRooms() {
|
||||||
defer {
|
defer {
|
||||||
appStartupTransaction.finish()
|
appStartupTransaction?.finish()
|
||||||
}
|
}
|
||||||
|
|
||||||
guard let firstRoomsState else { return }
|
guard let firstRoomsState else { return }
|
||||||
|
|||||||
Reference in New Issue
Block a user