Have long running analytic transactions return actual transactions.
Also add `AnalyticsService.getLongRunningTransaction` and change `AnalyticsService.stopLongRunningTransaction` to `removeLongRunningTransaction`.
This commit is contained in:
committed by
Jorge Martin Espinosa
parent
d6adf93906
commit
766c23721e
@@ -73,7 +73,7 @@ internal class RoomListFactory(
|
|||||||
initialFilterKind = RoomListEntriesDynamicFilterKind.All(ROOM_LIST_RUST_FILTERS),
|
initialFilterKind = RoomListEntriesDynamicFilterKind.All(ROOM_LIST_RUST_FILTERS),
|
||||||
).onEach { update ->
|
).onEach { update ->
|
||||||
if (!firstRoomsTransaction.isFinished()) {
|
if (!firstRoomsTransaction.isFinished()) {
|
||||||
analyticsService.stopLongRunningTransaction(AnalyticsLongRunningTransaction.FirstRoomsDisplayed)
|
analyticsService.removeLongRunningTransaction(AnalyticsLongRunningTransaction.FirstRoomsDisplayed)?.finish()
|
||||||
firstRoomsTransaction.finish()
|
firstRoomsTransaction.finish()
|
||||||
}
|
}
|
||||||
processor.postUpdate(update)
|
processor.postUpdate(update)
|
||||||
|
|||||||
@@ -55,9 +55,20 @@ interface AnalyticsService : AnalyticsTracker, ErrorTracker {
|
|||||||
*/
|
*/
|
||||||
fun startTransaction(name: String, operation: String? = null): AnalyticsTransaction
|
fun startTransaction(name: String, operation: String? = null): AnalyticsTransaction
|
||||||
|
|
||||||
fun startLongRunningTransaction(longRunningTransaction: AnalyticsLongRunningTransaction)
|
/**
|
||||||
|
* Starts an [AnalyticsLongRunningTransaction], that can be shared with other components.
|
||||||
|
*/
|
||||||
|
fun startLongRunningTransaction(longRunningTransaction: AnalyticsLongRunningTransaction): AnalyticsTransaction
|
||||||
|
|
||||||
fun stopLongRunningTransaction(longRunningTransaction: AnalyticsLongRunningTransaction)
|
/**
|
||||||
|
* Gets an ongoing [AnalyticsLongRunningTransaction], if it exists.
|
||||||
|
*/
|
||||||
|
fun getLongRunningTransaction(longRunningTransaction: AnalyticsLongRunningTransaction): AnalyticsTransaction?
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Removes an ongoing [AnalyticsLongRunningTransaction] so it's no longer shared.
|
||||||
|
*/
|
||||||
|
fun removeLongRunningTransaction(longRunningTransaction: AnalyticsLongRunningTransaction): AnalyticsTransaction?
|
||||||
}
|
}
|
||||||
|
|
||||||
inline fun <T> AnalyticsService.recordTransaction(name: String, operation: String, block: (AnalyticsTransaction) -> T): T {
|
inline fun <T> AnalyticsService.recordTransaction(name: String, operation: String, block: (AnalyticsTransaction) -> T): T {
|
||||||
|
|||||||
@@ -153,11 +153,17 @@ class DefaultAnalyticsService(
|
|||||||
} ?: NoopAnalyticsTransaction
|
} ?: NoopAnalyticsTransaction
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun startLongRunningTransaction(longRunningTransaction: AnalyticsLongRunningTransaction) {
|
override fun startLongRunningTransaction(longRunningTransaction: AnalyticsLongRunningTransaction): AnalyticsTransaction {
|
||||||
pendingLongRunningTransactions[longRunningTransaction] = startTransaction(longRunningTransaction.name, longRunningTransaction.operation)
|
val transaction = startTransaction(longRunningTransaction.name, longRunningTransaction.operation)
|
||||||
|
pendingLongRunningTransactions[longRunningTransaction] = transaction
|
||||||
|
return transaction
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun stopLongRunningTransaction(longRunningTransaction: AnalyticsLongRunningTransaction) {
|
override fun getLongRunningTransaction(longRunningTransaction: AnalyticsLongRunningTransaction): AnalyticsTransaction? {
|
||||||
pendingLongRunningTransactions.remove(longRunningTransaction)?.finish()
|
return pendingLongRunningTransactions[longRunningTransaction]
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun removeLongRunningTransaction(longRunningTransaction: AnalyticsLongRunningTransaction): AnalyticsTransaction? {
|
||||||
|
return pendingLongRunningTransactions.remove(longRunningTransaction)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ class NoopAnalyticsService : AnalyticsService {
|
|||||||
override fun trackError(throwable: Throwable) = Unit
|
override fun trackError(throwable: Throwable) = Unit
|
||||||
override fun updateSuperProperties(updatedProperties: SuperProperties) = Unit
|
override fun updateSuperProperties(updatedProperties: SuperProperties) = Unit
|
||||||
override fun startTransaction(name: String, operation: String?): AnalyticsTransaction = NoopAnalyticsTransaction
|
override fun startTransaction(name: String, operation: String?): AnalyticsTransaction = NoopAnalyticsTransaction
|
||||||
override fun startLongRunningTransaction(longRunningTransaction: AnalyticsLongRunningTransaction) {}
|
override fun startLongRunningTransaction(longRunningTransaction: AnalyticsLongRunningTransaction): AnalyticsTransaction = NoopAnalyticsTransaction
|
||||||
override fun stopLongRunningTransaction(longRunningTransaction: AnalyticsLongRunningTransaction) {}
|
override fun getLongRunningTransaction(longRunningTransaction: AnalyticsLongRunningTransaction): AnalyticsTransaction? = null
|
||||||
|
override fun removeLongRunningTransaction(longRunningTransaction: AnalyticsLongRunningTransaction) = NoopAnalyticsTransaction
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ class FakeAnalyticsService(
|
|||||||
val screenEvents = mutableListOf<VectorAnalyticsScreen>()
|
val screenEvents = mutableListOf<VectorAnalyticsScreen>()
|
||||||
val trackedErrors = mutableListOf<Throwable>()
|
val trackedErrors = mutableListOf<Throwable>()
|
||||||
val capturedUserProperties = mutableListOf<UserProperties>()
|
val capturedUserProperties = mutableListOf<UserProperties>()
|
||||||
|
val longRunningTransactions = mutableMapOf<AnalyticsLongRunningTransaction, AnalyticsTransaction>()
|
||||||
|
|
||||||
override fun getAvailableAnalyticsProviders(): Set<AnalyticsProvider> = emptySet()
|
override fun getAvailableAnalyticsProviders(): Set<AnalyticsProvider> = emptySet()
|
||||||
|
|
||||||
@@ -70,6 +71,16 @@ class FakeAnalyticsService(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun startTransaction(name: String, operation: String?): AnalyticsTransaction = NoopAnalyticsTransaction
|
override fun startTransaction(name: String, operation: String?): AnalyticsTransaction = NoopAnalyticsTransaction
|
||||||
override fun startLongRunningTransaction(longRunningTransaction: AnalyticsLongRunningTransaction) {}
|
override fun startLongRunningTransaction(longRunningTransaction: AnalyticsLongRunningTransaction): AnalyticsTransaction {
|
||||||
override fun stopLongRunningTransaction(longRunningTransaction: AnalyticsLongRunningTransaction) {}
|
longRunningTransactions[longRunningTransaction] = NoopAnalyticsTransaction
|
||||||
|
return NoopAnalyticsTransaction
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getLongRunningTransaction(longRunningTransaction: AnalyticsLongRunningTransaction): AnalyticsTransaction? {
|
||||||
|
return longRunningTransactions[longRunningTransaction]
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun removeLongRunningTransaction(longRunningTransaction: AnalyticsLongRunningTransaction): AnalyticsTransaction? {
|
||||||
|
return longRunningTransactions.remove(longRunningTransaction)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user