Add more previews
This commit is contained in:
parent
a137d9bc34
commit
09c53fc1ce
5 changed files with 35 additions and 12 deletions
|
|
@ -23,4 +23,5 @@ sealed interface CreateRoomRootEvents {
|
|||
data class StartDM(val matrixUser: MatrixUser) : CreateRoomRootEvents
|
||||
object CreateRoom : CreateRoomRootEvents
|
||||
object InvitePeople : CreateRoomRootEvents
|
||||
data class OnSearchActiveChanged(val active: Boolean) : CreateRoomRootEvents
|
||||
}
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@ class CreateRoomRootPresenter @Inject constructor() : Presenter<CreateRoomRootSt
|
|||
|
||||
@Composable
|
||||
override fun present(): CreateRoomRootState {
|
||||
var isSearchActive by rememberSaveable { mutableStateOf(false) }
|
||||
var searchQuery by rememberSaveable { mutableStateOf("") }
|
||||
val searchResults: MutableState<ImmutableList<MatrixUser>> = remember {
|
||||
mutableStateOf(persistentListOf())
|
||||
|
|
@ -45,6 +46,7 @@ class CreateRoomRootPresenter @Inject constructor() : Presenter<CreateRoomRootSt
|
|||
|
||||
fun handleEvents(event: CreateRoomRootEvents) {
|
||||
when (event) {
|
||||
is CreateRoomRootEvents.OnSearchActiveChanged -> isSearchActive = event.active
|
||||
is CreateRoomRootEvents.UpdateSearchQuery -> searchQuery = event.query
|
||||
is CreateRoomRootEvents.StartDM -> handleStartDM(event.matrixUser)
|
||||
CreateRoomRootEvents.CreateRoom -> Unit // Todo Handle create room action
|
||||
|
|
@ -65,6 +67,7 @@ class CreateRoomRootPresenter @Inject constructor() : Presenter<CreateRoomRootSt
|
|||
|
||||
return CreateRoomRootState(
|
||||
eventSink = ::handleEvents,
|
||||
isSearchActive = isSearchActive,
|
||||
searchQuery = searchQuery,
|
||||
searchResults = searchResults.value,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ import kotlinx.collections.immutable.ImmutableList
|
|||
// Do not use default value, so no member get forgotten in the presenters.
|
||||
data class CreateRoomRootState(
|
||||
val eventSink: (CreateRoomRootEvents) -> Unit,
|
||||
val isSearchActive: Boolean,
|
||||
val searchQuery: String,
|
||||
val searchResults: ImmutableList<MatrixUser>,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -25,12 +25,35 @@ open class CreateRoomRootStateProvider : PreviewParameterProvider<CreateRoomRoot
|
|||
override val values: Sequence<CreateRoomRootState>
|
||||
get() = sequenceOf(
|
||||
aCreateRoomRootState(),
|
||||
// Add other state here
|
||||
aCreateRoomRootState().copy(isSearchActive = true),
|
||||
aCreateRoomRootState().copy(isSearchActive = true, searchQuery = "someone"),
|
||||
aCreateRoomRootState().copy(
|
||||
isSearchActive = true,
|
||||
searchQuery = "@someone:matrix.org",
|
||||
searchResults = persistentListOf(
|
||||
MatrixUser(id = UserId("@someone:matrix.org")),
|
||||
MatrixUser(id = UserId("@someone:matrix.org"), username = "someone"),
|
||||
MatrixUser(
|
||||
id = UserId("@someone_with_a_very_long_matrix_identifier:a_very_long_domain.org"),
|
||||
username = "hey, I am someone with a very long display name"
|
||||
),
|
||||
MatrixUser(id = UserId("@someone_2:matrix.org"), username = "someone 2"),
|
||||
MatrixUser(id = UserId("@someone_3:matrix.org"), username = "someone 3"),
|
||||
MatrixUser(id = UserId("@someone_4:matrix.org"), username = "someone 4"),
|
||||
MatrixUser(id = UserId("@someone_5:matrix.org"), username = "someone 5"),
|
||||
MatrixUser(id = UserId("@someone_6:matrix.org"), username = "someone 6"),
|
||||
MatrixUser(id = UserId("@someone_7:matrix.org"), username = "someone 7"),
|
||||
MatrixUser(id = UserId("@someone_8:matrix.org"), username = "someone 8"),
|
||||
MatrixUser(id = UserId("@someone_9:matrix.org"), username = "someone 9"),
|
||||
MatrixUser(id = UserId("@someone_10:matrix.org"), username = "someone 10"),
|
||||
)
|
||||
),
|
||||
)
|
||||
}
|
||||
|
||||
fun aCreateRoomRootState() = CreateRoomRootState(
|
||||
eventSink = {},
|
||||
searchQuery = "@someone:example.org",
|
||||
searchResults = persistentListOf(MatrixUser(UserId("@someone:example.org"))),
|
||||
isSearchActive = false,
|
||||
searchQuery = "",
|
||||
searchResults = persistentListOf(),
|
||||
)
|
||||
|
|
|
|||
|
|
@ -32,10 +32,6 @@ import androidx.compose.material.icons.filled.Search
|
|||
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||
import androidx.compose.material3.SearchBarDefaults
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.saveable.rememberSaveable
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.draw.alpha
|
||||
|
|
@ -70,11 +66,10 @@ fun CreateRoomRootView(
|
|||
modifier: Modifier = Modifier,
|
||||
onClosePressed: () -> Unit = {},
|
||||
) {
|
||||
var isSearchActive by rememberSaveable { mutableStateOf(false) }
|
||||
Scaffold(
|
||||
modifier = modifier.fillMaxWidth(),
|
||||
topBar = {
|
||||
if (!isSearchActive) {
|
||||
if (!state.isSearchActive) {
|
||||
CreateRoomRootViewTopBar(onClosePressed = onClosePressed)
|
||||
}
|
||||
}
|
||||
|
|
@ -88,13 +83,13 @@ fun CreateRoomRootView(
|
|||
query = state.searchQuery,
|
||||
placeHolderTitle = stringResource(StringR.string.search_for_someone),
|
||||
results = state.searchResults,
|
||||
active = isSearchActive,
|
||||
onActiveChanged = { isSearchActive = it },
|
||||
active = state.isSearchActive,
|
||||
onActiveChanged = { state.eventSink(CreateRoomRootEvents.OnSearchActiveChanged(it)) },
|
||||
onTextChanged = { state.eventSink(CreateRoomRootEvents.UpdateSearchQuery(it)) },
|
||||
onResultSelected = { state.eventSink(CreateRoomRootEvents.StartDM(it)) }
|
||||
)
|
||||
|
||||
if (!isSearchActive) {
|
||||
if (!state.isSearchActive) {
|
||||
CreateRoomActionButtonsList(
|
||||
onNewRoomClicked = { state.eventSink(CreateRoomRootEvents.CreateRoom) },
|
||||
onInvitePeopleClicked = { state.eventSink(CreateRoomRootEvents.InvitePeople) },
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue