RoomDirectory : branch feature flag
This commit is contained in:
parent
425eadd98f
commit
b3ffc13824
4 changed files with 19 additions and 10 deletions
|
|
@ -24,11 +24,14 @@ import androidx.compose.runtime.mutableStateOf
|
||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.remember
|
||||||
import androidx.compose.runtime.setValue
|
import androidx.compose.runtime.setValue
|
||||||
import io.element.android.libraries.architecture.Presenter
|
import io.element.android.libraries.architecture.Presenter
|
||||||
|
import io.element.android.libraries.featureflag.api.FeatureFlagService
|
||||||
|
import io.element.android.libraries.featureflag.api.FeatureFlags
|
||||||
import kotlinx.collections.immutable.persistentListOf
|
import kotlinx.collections.immutable.persistentListOf
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
class RoomListSearchPresenter @Inject constructor(
|
class RoomListSearchPresenter @Inject constructor(
|
||||||
private val dataSource: RoomListSearchDataSource,
|
private val dataSource: RoomListSearchDataSource,
|
||||||
|
private val featureFlagService: FeatureFlagService,
|
||||||
) : Presenter<RoomListSearchState> {
|
) : Presenter<RoomListSearchState> {
|
||||||
@Composable
|
@Composable
|
||||||
override fun present(): RoomListSearchState {
|
override fun present(): RoomListSearchState {
|
||||||
|
|
@ -63,12 +66,14 @@ class RoomListSearchPresenter @Inject constructor(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val isRoomDirectorySearchEnabled by featureFlagService.isFeatureEnabledFlow(FeatureFlags.RoomDirectorySearch).collectAsState(initial = false)
|
||||||
val searchResults by dataSource.roomSummaries.collectAsState(initial = persistentListOf())
|
val searchResults by dataSource.roomSummaries.collectAsState(initial = persistentListOf())
|
||||||
|
|
||||||
return RoomListSearchState(
|
return RoomListSearchState(
|
||||||
isSearchActive = isSearchActive,
|
isSearchActive = isSearchActive,
|
||||||
query = searchQuery,
|
query = searchQuery,
|
||||||
results = searchResults,
|
results = searchResults,
|
||||||
|
isRoomDirectorySearchEnabled = isRoomDirectorySearchEnabled,
|
||||||
eventSink = ::handleEvents
|
eventSink = ::handleEvents
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -23,5 +23,8 @@ data class RoomListSearchState(
|
||||||
val isSearchActive: Boolean,
|
val isSearchActive: Boolean,
|
||||||
val query: String,
|
val query: String,
|
||||||
val results: ImmutableList<RoomListRoomSummary>,
|
val results: ImmutableList<RoomListRoomSummary>,
|
||||||
|
val isRoomDirectorySearchEnabled: Boolean,
|
||||||
val eventSink: (RoomListSearchEvents) -> Unit
|
val eventSink: (RoomListSearchEvents) -> Unit
|
||||||
)
|
) {
|
||||||
|
val displayRoomDirectorySearch = query.isEmpty() && isRoomDirectorySearchEnabled
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,7 @@ class RoomListSearchStateProvider : PreviewParameterProvider<RoomListSearchState
|
||||||
override val values: Sequence<RoomListSearchState>
|
override val values: Sequence<RoomListSearchState>
|
||||||
get() = sequenceOf(
|
get() = sequenceOf(
|
||||||
aRoomListSearchState(),
|
aRoomListSearchState(),
|
||||||
|
aRoomListSearchState(isRoomDirectorySearchEnabled = true),
|
||||||
aRoomListSearchState(
|
aRoomListSearchState(
|
||||||
isSearchActive = true,
|
isSearchActive = true,
|
||||||
query = "Test",
|
query = "Test",
|
||||||
|
|
@ -38,10 +39,12 @@ fun aRoomListSearchState(
|
||||||
isSearchActive: Boolean = false,
|
isSearchActive: Boolean = false,
|
||||||
query: String = "",
|
query: String = "",
|
||||||
results: ImmutableList<RoomListRoomSummary> = persistentListOf(),
|
results: ImmutableList<RoomListRoomSummary> = persistentListOf(),
|
||||||
|
isRoomDirectorySearchEnabled: Boolean = false,
|
||||||
eventSink: (RoomListSearchEvents) -> Unit = { },
|
eventSink: (RoomListSearchEvents) -> Unit = { },
|
||||||
) = RoomListSearchState(
|
) = RoomListSearchState(
|
||||||
isSearchActive = isSearchActive,
|
isSearchActive = isSearchActive,
|
||||||
query = query,
|
query = query,
|
||||||
results = results,
|
results = results,
|
||||||
|
isRoomDirectorySearchEnabled = isRoomDirectorySearchEnabled,
|
||||||
eventSink = eventSink,
|
eventSink = eventSink,
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -26,8 +26,6 @@ import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.lazy.LazyColumn
|
import androidx.compose.foundation.lazy.LazyColumn
|
||||||
import androidx.compose.foundation.lazy.items
|
import androidx.compose.foundation.lazy.items
|
||||||
import androidx.compose.material.icons.Icons
|
|
||||||
import androidx.compose.material.icons.filled.QrCode
|
|
||||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||||
import androidx.compose.material3.MaterialTheme
|
import androidx.compose.material3.MaterialTheme
|
||||||
import androidx.compose.material3.TextFieldDefaults
|
import androidx.compose.material3.TextFieldDefaults
|
||||||
|
|
@ -133,8 +131,8 @@ private fun RoomListSearchContent(
|
||||||
val focusRequester = FocusRequester()
|
val focusRequester = FocusRequester()
|
||||||
TextField(
|
TextField(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.fillMaxWidth()
|
.fillMaxWidth()
|
||||||
.focusRequester(focusRequester),
|
.focusRequester(focusRequester),
|
||||||
value = filter,
|
value = filter,
|
||||||
singleLine = true,
|
singleLine = true,
|
||||||
onValueChange = { state.eventSink(RoomListSearchEvents.QueryChanged(it)) },
|
onValueChange = { state.eventSink(RoomListSearchEvents.QueryChanged(it)) },
|
||||||
|
|
@ -173,14 +171,14 @@ private fun RoomListSearchContent(
|
||||||
) { padding ->
|
) { padding ->
|
||||||
Column(
|
Column(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.padding(padding)
|
.padding(padding)
|
||||||
.consumeWindowInsets(padding)
|
.consumeWindowInsets(padding)
|
||||||
) {
|
) {
|
||||||
if(state.query.isEmpty()){
|
if (state.displayRoomDirectorySearch) {
|
||||||
RoomDirectorySearchButton(
|
RoomDirectorySearchButton(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.fillMaxWidth()
|
.fillMaxWidth()
|
||||||
.padding(vertical = 24.dp, horizontal = 16.dp),
|
.padding(vertical = 24.dp, horizontal = 16.dp),
|
||||||
onClick = onRoomDirectorySearchClicked
|
onClick = onRoomDirectorySearchClicked
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue