Replace our firstIfSingle extension with singleOrNull from the Kotlin library.

This commit is contained in:
Benoit Marty
2025-01-22 15:49:41 +01:00
parent 942054e927
commit f7a4c999f7
3 changed files with 3 additions and 20 deletions

View File

@@ -18,7 +18,6 @@ import io.element.android.features.knockrequests.impl.data.KnockRequestPresentab
import io.element.android.features.knockrequests.impl.data.KnockRequestsService import io.element.android.features.knockrequests.impl.data.KnockRequestsService
import io.element.android.libraries.architecture.Presenter import io.element.android.libraries.architecture.Presenter
import io.element.android.libraries.core.coroutine.mapState import io.element.android.libraries.core.coroutine.mapState
import io.element.android.libraries.core.extensions.firstIfSingle
import kotlinx.collections.immutable.toImmutableList import kotlinx.collections.immutable.toImmutableList
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
@@ -79,7 +78,7 @@ class KnockRequestsBannerPresenter @Inject constructor(
knockRequests: List<KnockRequestPresentable>, knockRequests: List<KnockRequestPresentable>,
displayAcceptError: MutableState<Boolean>, displayAcceptError: MutableState<Boolean>,
) = launch { ) = launch {
val knockRequest = knockRequests.firstIfSingle() val knockRequest = knockRequests.singleOrNull()
if (knockRequest != null) { if (knockRequest != null) {
knockRequestsService.acceptKnockRequest(knockRequest, optimistic = true) knockRequestsService.acceptKnockRequest(knockRequest, optimistic = true)
.onFailure { .onFailure {

View File

@@ -12,7 +12,6 @@ import androidx.compose.ui.res.pluralStringResource
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import io.element.android.features.knockrequests.impl.R import io.element.android.features.knockrequests.impl.R
import io.element.android.features.knockrequests.impl.data.KnockRequestPresentable import io.element.android.features.knockrequests.impl.data.KnockRequestPresentable
import io.element.android.libraries.core.extensions.firstIfSingle
import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.ImmutableList
data class KnockRequestsBannerState( data class KnockRequestsBannerState(
@@ -22,8 +21,8 @@ data class KnockRequestsBannerState(
val canAccept: Boolean, val canAccept: Boolean,
val eventSink: (KnockRequestsBannerEvents) -> Unit, val eventSink: (KnockRequestsBannerEvents) -> Unit,
) { ) {
val subtitle = knockRequests.firstIfSingle()?.userId?.value val subtitle = knockRequests.singleOrNull()?.userId?.value
val reason = knockRequests.firstIfSingle()?.reason val reason = knockRequests.singleOrNull()?.reason
@Composable @Composable
fun formattedTitle(): String { fun formattedTitle(): String {

View File

@@ -1,15 +0,0 @@
/*
* Copyright 2024 New Vector Ltd.
*
* SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
* Please see LICENSE files in the repository root for full details.
*/
package io.element.android.libraries.core.extensions
/**
* Returns the first element if the list contains exactly one element, otherwise returns null.
*/
inline fun <reified T> List<T>.firstIfSingle(): T? {
return if (size == 1) first() else null
}