Add AnalyticsService.cancelLongRunningTransaction and AnalyticsService.finishLongRunningTransaction

This commit is contained in:
Jorge Martín 2025-11-27 12:27:49 +01:00 committed by Jorge Martin Espinosa
parent 1d77aa447d
commit 1c576fd42d
7 changed files with 37 additions and 9 deletions

View file

@ -89,3 +89,24 @@ inline fun <T> AnalyticsService.recordTransaction(
transaction.finish()
}
}
/**
* Cancels a long running transaction. It behaves the same as [AnalyticsService.removeLongRunningTransaction],
* but it doesn't return the transaction so we can't finish it later.
*/
fun AnalyticsService.cancelLongRunningTransaction(
longRunningTransaction: AnalyticsLongRunningTransaction
) = removeLongRunningTransaction(longRunningTransaction)
/**
* Finishes a long running transaction if it exists. Optionally performs an [action] with the transaction before finishing it.
*/
fun AnalyticsService.finishLongRunningTransaction(
longRunningTransaction: AnalyticsLongRunningTransaction,
action: (AnalyticsTransaction) -> Unit = {},
) {
removeLongRunningTransaction(longRunningTransaction)?.let {
action(it)
it.finish()
}
}