mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-02 21:33:26 +00:00
Clean up the Signposter implementation and align on new metrics
This commit is contained in:
committed by
Stefan Ceriu
parent
8b768f74f8
commit
a2a8527ffc
@@ -12,10 +12,12 @@ import Foundation
|
||||
import MatrixRustSDK
|
||||
import OrderedCollections
|
||||
|
||||
// swiftlint:disable:next type_body_length
|
||||
class ClientProxy: ClientProxyProtocol {
|
||||
private let client: ClientProtocol
|
||||
private let networkMonitor: NetworkMonitorProtocol
|
||||
private let appSettings: AppSettings
|
||||
private let analyticsService: AnalyticsService
|
||||
|
||||
let mediaLoader: MediaLoaderProtocol
|
||||
private let clientQueue: DispatchQueue
|
||||
@@ -37,7 +39,10 @@ class ClientProxy: ClientProxyProtocol {
|
||||
private var verificationStateListenerTaskHandle: TaskHandle?
|
||||
|
||||
// periphery:ignore - required for instance retention in the rust codebase
|
||||
private var sendQueueListenerTaskHandle: TaskHandle?
|
||||
private var sendQueueStatusListenerTaskHandle: TaskHandle?
|
||||
|
||||
// periphery:ignore - required for instance retention in the rust codebase
|
||||
private var sendQueueUpdatesListenerTaskHandle: TaskHandle?
|
||||
|
||||
// periphery:ignore - required for instance retention in the rust codebase
|
||||
private var mediaPreviewConfigListenerTaskHandle: TaskHandle?
|
||||
@@ -184,10 +189,12 @@ class ClientProxy: ClientProxyProtocol {
|
||||
|
||||
init(client: ClientProtocol,
|
||||
networkMonitor: NetworkMonitorProtocol,
|
||||
appSettings: AppSettings) async throws {
|
||||
appSettings: AppSettings,
|
||||
analyticsService: AnalyticsService) async throws {
|
||||
self.client = client
|
||||
self.networkMonitor = networkMonitor
|
||||
self.appSettings = appSettings
|
||||
self.analyticsService = analyticsService
|
||||
|
||||
clientQueue = .init(label: "ClientProxyQueue", attributes: .concurrent)
|
||||
|
||||
@@ -243,11 +250,22 @@ class ClientProxy: ClientProxyProtocol {
|
||||
Task { await self?.updateVerificationState(verificationState) }
|
||||
})
|
||||
|
||||
sendQueueListenerTaskHandle = client.subscribeToSendQueueStatus(listener: SDKListener { [weak self] roomID, error in
|
||||
sendQueueStatusListenerTaskHandle = client.subscribeToSendQueueStatus(listener: SDKListener { [weak self] roomID, error in
|
||||
MXLog.error("Send queue failed in room: \(roomID) with error: \(error)")
|
||||
self?.sendQueueStatusSubject.send(false)
|
||||
})
|
||||
|
||||
sendQueueUpdatesListenerTaskHandle = try? await client.subscribeToSendQueueUpdates(listener: SDKListener { _, update in
|
||||
switch update {
|
||||
case .newLocalEvent(let transactionID):
|
||||
analyticsService.signpost.startTransaction(.sendMessage(uuid: transactionID))
|
||||
case .sentEvent(let transactionID, _):
|
||||
analyticsService.signpost.finishTransaction(.sendMessage(uuid: transactionID))
|
||||
default:
|
||||
break
|
||||
}
|
||||
})
|
||||
|
||||
sendQueueStatusSubject
|
||||
.combineLatest(homeserverReachabilityPublisher)
|
||||
.debounce(for: 1.0, scheduler: DispatchQueue.main)
|
||||
@@ -1136,7 +1154,8 @@ class ClientProxy: ClientProxyProtocol {
|
||||
case .joined:
|
||||
let roomProxy = try await JoinedRoomProxy(roomListService: roomListService,
|
||||
room: room,
|
||||
appSettings: appSettings)
|
||||
appSettings: appSettings,
|
||||
analyticsService: analyticsService)
|
||||
|
||||
return .joined(roomProxy)
|
||||
case .left:
|
||||
|
||||
Reference in New Issue
Block a user