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
@@ -55,9 +55,20 @@ interface AnalyticsService : AnalyticsTracker, ErrorTracker {
|
||||
*/
|
||||
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 {
|
||||
|
||||
@@ -153,11 +153,17 @@ class DefaultAnalyticsService(
|
||||
} ?: NoopAnalyticsTransaction
|
||||
}
|
||||
|
||||
override fun startLongRunningTransaction(longRunningTransaction: AnalyticsLongRunningTransaction) {
|
||||
pendingLongRunningTransactions[longRunningTransaction] = startTransaction(longRunningTransaction.name, longRunningTransaction.operation)
|
||||
override fun startLongRunningTransaction(longRunningTransaction: AnalyticsLongRunningTransaction): AnalyticsTransaction {
|
||||
val transaction = startTransaction(longRunningTransaction.name, longRunningTransaction.operation)
|
||||
pendingLongRunningTransactions[longRunningTransaction] = transaction
|
||||
return transaction
|
||||
}
|
||||
|
||||
override fun stopLongRunningTransaction(longRunningTransaction: AnalyticsLongRunningTransaction) {
|
||||
pendingLongRunningTransactions.remove(longRunningTransaction)?.finish()
|
||||
override fun getLongRunningTransaction(longRunningTransaction: AnalyticsLongRunningTransaction): AnalyticsTransaction? {
|
||||
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 updateSuperProperties(updatedProperties: SuperProperties) = Unit
|
||||
override fun startTransaction(name: String, operation: String?): AnalyticsTransaction = NoopAnalyticsTransaction
|
||||
override fun startLongRunningTransaction(longRunningTransaction: AnalyticsLongRunningTransaction) {}
|
||||
override fun stopLongRunningTransaction(longRunningTransaction: AnalyticsLongRunningTransaction) {}
|
||||
override fun startLongRunningTransaction(longRunningTransaction: AnalyticsLongRunningTransaction): AnalyticsTransaction = NoopAnalyticsTransaction
|
||||
override fun getLongRunningTransaction(longRunningTransaction: AnalyticsLongRunningTransaction): AnalyticsTransaction? = null
|
||||
override fun removeLongRunningTransaction(longRunningTransaction: AnalyticsLongRunningTransaction) = NoopAnalyticsTransaction
|
||||
}
|
||||
|
||||
@@ -31,6 +31,7 @@ class FakeAnalyticsService(
|
||||
val screenEvents = mutableListOf<VectorAnalyticsScreen>()
|
||||
val trackedErrors = mutableListOf<Throwable>()
|
||||
val capturedUserProperties = mutableListOf<UserProperties>()
|
||||
val longRunningTransactions = mutableMapOf<AnalyticsLongRunningTransaction, AnalyticsTransaction>()
|
||||
|
||||
override fun getAvailableAnalyticsProviders(): Set<AnalyticsProvider> = emptySet()
|
||||
|
||||
@@ -70,6 +71,16 @@ class FakeAnalyticsService(
|
||||
}
|
||||
|
||||
override fun startTransaction(name: String, operation: String?): AnalyticsTransaction = NoopAnalyticsTransaction
|
||||
override fun startLongRunningTransaction(longRunningTransaction: AnalyticsLongRunningTransaction) {}
|
||||
override fun stopLongRunningTransaction(longRunningTransaction: AnalyticsLongRunningTransaction) {}
|
||||
override fun startLongRunningTransaction(longRunningTransaction: AnalyticsLongRunningTransaction): AnalyticsTransaction {
|
||||
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