Merge pull request #5166 from element-hq/feature/fga/create_room_flow_rework

Create room flow rework
This commit is contained in:
Benoit Marty 2025-08-18 09:38:28 +02:00 committed by GitHub
commit de16268674
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
340 changed files with 2539 additions and 1784 deletions

View file

@ -160,3 +160,17 @@ suspend inline fun <T> runUpdatingState(
}
)
}
inline fun <T, R> AsyncData<T>.map(
transform: (T?) -> R,
): AsyncData<R> {
return when (this) {
is AsyncData.Failure -> AsyncData.Failure(
error = error,
prevData = transform(prevData)
)
is AsyncData.Loading -> AsyncData.Loading(transform(prevData))
is AsyncData.Success -> AsyncData.Success(transform(data))
AsyncData.Uninitialized -> AsyncData.Uninitialized
}
}

View file

@ -1,15 +0,0 @@
/*
* Copyright 2023, 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.designsystem.utils
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
open class StringProvider(val strings: List<String>) : PreviewParameterProvider<String> {
override val values: Sequence<String>
get() = strings.asSequence()
}

View file

@ -0,0 +1,32 @@
/*
* Copyright 2025 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.matrix.api.room
import io.element.android.libraries.core.bool.orFalse
import kotlinx.coroutines.withContext
import kotlin.coroutines.CoroutineContext
/**
* Method to filter members by userId or displayName.
* It does filter through the already known members, it doesn't perform additional requests.
*/
suspend fun BaseRoom.filterMembers(query: String, coroutineContext: CoroutineContext): List<RoomMember> = withContext(coroutineContext) {
val roomMembersState = membersStateFlow.value
val activeRoomMembers = roomMembersState.roomMembers()
?.filter { it.membership.isActive() }
.orEmpty()
val filteredMembers = if (query.isBlank()) {
activeRoomMembers
} else {
activeRoomMembers.filter { member ->
member.userId.value.contains(query, ignoreCase = true) ||
member.displayName?.contains(query, ignoreCase = true).orFalse()
}
}
filteredMembers
}

View file

@ -88,6 +88,7 @@
<string name="action_enable">"Enable"</string>
<string name="action_end_poll">"End poll"</string>
<string name="action_enter_pin">"Enter PIN"</string>
<string name="action_finish">"Finish"</string>
<string name="action_forgot_password">"Forgot password?"</string>
<string name="action_forward">"Forward"</string>
<string name="action_go_back">"Go back"</string>
@ -301,6 +302,7 @@ Reason: %1$s."</string>
<string name="common_signing_out">"Signing out"</string>
<string name="common_something_went_wrong">"Something went wrong"</string>
<string name="common_something_went_wrong_message">"We encountered an issue. Please try again."</string>
<string name="common_space">"Space"</string>
<plurals name="common_spaces">
<item quantity="one">"%1$d Space"</item>
<item quantity="other">"%1$d Spaces"</item>