From 4511fc38056dcb115565def217c9f41232c393ca Mon Sep 17 00:00:00 2001 From: Marco Romano Date: Thu, 15 Jun 2023 12:53:11 +0200 Subject: [PATCH] Inline Async extension functions (#598) Just a tiny perf improvement. --- .../io/element/android/libraries/architecture/Async.kt | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/Async.kt b/libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/Async.kt index 3be961598d..301dcfd936 100644 --- a/libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/Async.kt +++ b/libraries/architecture/src/main/kotlin/io/element/android/libraries/architecture/Async.kt @@ -36,17 +36,20 @@ sealed interface Async { } } -suspend fun (suspend () -> T).execute(state: MutableState>, errorMapping: ((Throwable) -> Throwable)? = null) { +suspend inline fun (suspend () -> T).execute( + state: MutableState>, + errorMapping: ((Throwable) -> Throwable) = { it }, +) { try { state.value = Async.Loading() val result = this() state.value = Async.Success(result) } catch (error: Throwable) { - state.value = Async.Failure(errorMapping?.invoke(error) ?: error) + state.value = Async.Failure(errorMapping.invoke(error)) } } -suspend fun (suspend () -> Result).executeResult(state: MutableState>) { +suspend inline fun (suspend () -> Result).executeResult(state: MutableState>) { if (state.value !is Async.Success) { state.value = Async.Loading() }