Replace our firstIfSingle extension with singleOrNull from the Kotlin library.
This commit is contained in:
@@ -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 {
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user