Renaming package to selectusers
This commit is contained in:
parent
c476a29edb
commit
52f9d2b091
7 changed files with 40 additions and 41 deletions
|
|
@ -29,7 +29,7 @@ import dagger.assisted.Assisted
|
||||||
import dagger.assisted.AssistedInject
|
import dagger.assisted.AssistedInject
|
||||||
import io.element.android.anvilannotations.ContributesNode
|
import io.element.android.anvilannotations.ContributesNode
|
||||||
import io.element.android.features.createroom.impl.root.CreateRoomRootNode
|
import io.element.android.features.createroom.impl.root.CreateRoomRootNode
|
||||||
import io.element.android.features.createroom.impl.selectmembers.SelectMembersNode
|
import io.element.android.features.createroom.impl.selectusers.SelectUsersNode
|
||||||
import io.element.android.libraries.architecture.BackstackNode
|
import io.element.android.libraries.architecture.BackstackNode
|
||||||
import io.element.android.libraries.architecture.animation.rememberDefaultTransitionHandler
|
import io.element.android.libraries.architecture.animation.rememberDefaultTransitionHandler
|
||||||
import io.element.android.libraries.architecture.createNode
|
import io.element.android.libraries.architecture.createNode
|
||||||
|
|
@ -67,7 +67,7 @@ class CreateRoomFlowNode @AssistedInject constructor(
|
||||||
}
|
}
|
||||||
createNode<CreateRoomRootNode>(buildContext, plugins = listOf(callback))
|
createNode<CreateRoomRootNode>(buildContext, plugins = listOf(callback))
|
||||||
}
|
}
|
||||||
NavTarget.NewRoom -> createNode<SelectMembersNode>(buildContext)
|
NavTarget.NewRoom -> createNode<SelectUsersNode>(buildContext)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,11 +14,11 @@
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package io.element.android.features.createroom.impl.selectmembers
|
package io.element.android.features.createroom.impl.selectusers
|
||||||
|
|
||||||
import io.element.android.libraries.matrix.ui.model.MatrixUser
|
import io.element.android.libraries.matrix.ui.model.MatrixUser
|
||||||
|
|
||||||
sealed interface SelectMembersEvents {
|
sealed interface SelectUsersEvents {
|
||||||
data class AddToSelection(val matrixUser: MatrixUser) : SelectMembersEvents
|
data class AddToSelection(val matrixUser: MatrixUser) : SelectUsersEvents
|
||||||
data class RemoveFromSelection(val matrixUser: MatrixUser) : SelectMembersEvents
|
data class RemoveFromSelection(val matrixUser: MatrixUser) : SelectUsersEvents
|
||||||
}
|
}
|
||||||
|
|
@ -14,7 +14,7 @@
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package io.element.android.features.createroom.impl.selectmembers
|
package io.element.android.features.createroom.impl.selectusers
|
||||||
|
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
|
|
@ -27,16 +27,16 @@ import io.element.android.anvilannotations.ContributesNode
|
||||||
import io.element.android.libraries.di.AppScope
|
import io.element.android.libraries.di.AppScope
|
||||||
|
|
||||||
@ContributesNode(AppScope::class)
|
@ContributesNode(AppScope::class)
|
||||||
class SelectMembersNode @AssistedInject constructor(
|
class SelectUsersNode @AssistedInject constructor(
|
||||||
@Assisted buildContext: BuildContext,
|
@Assisted buildContext: BuildContext,
|
||||||
@Assisted plugins: List<Plugin>,
|
@Assisted plugins: List<Plugin>,
|
||||||
private val presenter: SelectMembersPresenter,
|
private val presenter: SelectUsersPresenter,
|
||||||
) : Node(buildContext, plugins = plugins) {
|
) : Node(buildContext, plugins = plugins) {
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
override fun View(modifier: Modifier) {
|
override fun View(modifier: Modifier) {
|
||||||
val state = presenter.present()
|
val state = presenter.present()
|
||||||
SelectMembersView(
|
SelectUsersView(
|
||||||
state = state,
|
state = state,
|
||||||
modifier = modifier,
|
modifier = modifier,
|
||||||
onBackPressed = { navigateUp() },
|
onBackPressed = { navigateUp() },
|
||||||
|
|
@ -14,7 +14,7 @@
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package io.element.android.features.createroom.impl.selectmembers
|
package io.element.android.features.createroom.impl.selectusers
|
||||||
|
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.MutableState
|
import androidx.compose.runtime.MutableState
|
||||||
|
|
@ -28,20 +28,20 @@ import kotlinx.collections.immutable.toImmutableList
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
// TODO add unit tests
|
// TODO add unit tests
|
||||||
class SelectMembersPresenter @Inject constructor() : Presenter<SelectMembersState> {
|
class SelectUsersPresenter @Inject constructor() : Presenter<SelectUsersState> {
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
override fun present(): SelectMembersState {
|
override fun present(): SelectUsersState {
|
||||||
val selectedUsers: MutableState<ImmutableList<MatrixUser>> = remember { mutableStateOf(persistentListOf()) }
|
val selectedUsers: MutableState<ImmutableList<MatrixUser>> = remember { mutableStateOf(persistentListOf()) }
|
||||||
|
|
||||||
fun handleEvents(event: SelectMembersEvents) {
|
fun handleEvents(event: SelectUsersEvents) {
|
||||||
when (event) {
|
when (event) {
|
||||||
is SelectMembersEvents.AddToSelection -> selectedUsers.value = selectedUsers.value.plus(event.matrixUser).toImmutableList()
|
is SelectUsersEvents.AddToSelection -> selectedUsers.value = selectedUsers.value.plus(event.matrixUser).toImmutableList()
|
||||||
is SelectMembersEvents.RemoveFromSelection -> selectedUsers.value = selectedUsers.value.minus(event.matrixUser).toImmutableList()
|
is SelectUsersEvents.RemoveFromSelection -> selectedUsers.value = selectedUsers.value.minus(event.matrixUser).toImmutableList()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return SelectMembersState(
|
return SelectUsersState(
|
||||||
selectedUsers = selectedUsers.value,
|
selectedUsers = selectedUsers.value,
|
||||||
eventSink = ::handleEvents,
|
eventSink = ::handleEvents,
|
||||||
)
|
)
|
||||||
|
|
@ -14,12 +14,12 @@
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package io.element.android.features.createroom.impl.selectmembers
|
package io.element.android.features.createroom.impl.selectusers
|
||||||
|
|
||||||
import io.element.android.libraries.matrix.ui.model.MatrixUser
|
import io.element.android.libraries.matrix.ui.model.MatrixUser
|
||||||
import kotlinx.collections.immutable.ImmutableList
|
import kotlinx.collections.immutable.ImmutableList
|
||||||
|
|
||||||
data class SelectMembersState(
|
data class SelectUsersState(
|
||||||
val selectedUsers: ImmutableList<MatrixUser>,
|
val selectedUsers: ImmutableList<MatrixUser>,
|
||||||
val eventSink: (SelectMembersEvents) -> Unit,
|
val eventSink: (SelectUsersEvents) -> Unit,
|
||||||
)
|
)
|
||||||
|
|
@ -14,7 +14,7 @@
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package io.element.android.features.createroom.impl.selectmembers
|
package io.element.android.features.createroom.impl.selectusers
|
||||||
|
|
||||||
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
|
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
|
||||||
import io.element.android.libraries.designsystem.components.avatar.AvatarData
|
import io.element.android.libraries.designsystem.components.avatar.AvatarData
|
||||||
|
|
@ -22,11 +22,11 @@ import io.element.android.libraries.matrix.api.core.UserId
|
||||||
import io.element.android.libraries.matrix.ui.model.MatrixUser
|
import io.element.android.libraries.matrix.ui.model.MatrixUser
|
||||||
import kotlinx.collections.immutable.persistentListOf
|
import kotlinx.collections.immutable.persistentListOf
|
||||||
|
|
||||||
open class SelectMembersStateProvider : PreviewParameterProvider<SelectMembersState> {
|
open class SelectUsersStateProvider : PreviewParameterProvider<SelectUsersState> {
|
||||||
override val values: Sequence<SelectMembersState>
|
override val values: Sequence<SelectUsersState>
|
||||||
get() = sequenceOf(
|
get() = sequenceOf(
|
||||||
aSelectMembersState(),
|
aSelectUsersState(),
|
||||||
aSelectMembersState().copy(
|
aSelectUsersState().copy(
|
||||||
selectedUsers = persistentListOf(
|
selectedUsers = persistentListOf(
|
||||||
aMatrixUser(userName = "User"),
|
aMatrixUser(userName = "User"),
|
||||||
aMatrixUser(userName = "User with long name"),
|
aMatrixUser(userName = "User with long name"),
|
||||||
|
|
@ -35,7 +35,7 @@ open class SelectMembersStateProvider : PreviewParameterProvider<SelectMembersSt
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun aSelectMembersState() = SelectMembersState(
|
fun aSelectUsersState() = SelectUsersState(
|
||||||
selectedUsers = persistentListOf(),
|
selectedUsers = persistentListOf(),
|
||||||
eventSink = {}
|
eventSink = {}
|
||||||
)
|
)
|
||||||
|
|
@ -14,7 +14,7 @@
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package io.element.android.features.createroom.impl.selectmembers
|
package io.element.android.features.createroom.impl.selectusers
|
||||||
|
|
||||||
import androidx.compose.foundation.background
|
import androidx.compose.foundation.background
|
||||||
import androidx.compose.foundation.layout.Arrangement
|
import androidx.compose.foundation.layout.Arrangement
|
||||||
|
|
@ -57,8 +57,8 @@ import io.element.android.libraries.ui.strings.R as StringR
|
||||||
|
|
||||||
@OptIn(ExperimentalMaterial3Api::class)
|
@OptIn(ExperimentalMaterial3Api::class)
|
||||||
@Composable
|
@Composable
|
||||||
fun SelectMembersView(
|
fun SelectUsersView(
|
||||||
state: SelectMembersState,
|
state: SelectUsersState,
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
onBackPressed: () -> Unit = {},
|
onBackPressed: () -> Unit = {},
|
||||||
onNextPressed: () -> Unit = {},
|
onNextPressed: () -> Unit = {},
|
||||||
|
|
@ -67,7 +67,7 @@ fun SelectMembersView(
|
||||||
|
|
||||||
Scaffold(
|
Scaffold(
|
||||||
topBar = {
|
topBar = {
|
||||||
SelectMembersViewTopBar(
|
SelectUsersViewTopBar(
|
||||||
hasSelectedUsers = state.selectedUsers.isNotEmpty(),
|
hasSelectedUsers = state.selectedUsers.isNotEmpty(),
|
||||||
onBackPressed = onBackPressed,
|
onBackPressed = onBackPressed,
|
||||||
onNextPressed = onNextPressed,
|
onNextPressed = onNextPressed,
|
||||||
|
|
@ -80,10 +80,10 @@ fun SelectMembersView(
|
||||||
.padding(padding)
|
.padding(padding)
|
||||||
) {
|
) {
|
||||||
// TODO create a SearchUserView with multi selection option + callbacks
|
// TODO create a SearchUserView with multi selection option + callbacks
|
||||||
SelectedMembersList(
|
SelectedUsersList(
|
||||||
modifier = Modifier.padding(horizontal = 16.dp),
|
modifier = Modifier.padding(horizontal = 16.dp),
|
||||||
selectedUsers = state.selectedUsers,
|
selectedUsers = state.selectedUsers,
|
||||||
onUserRemoved = { eventSink(SelectMembersEvents.RemoveFromSelection(it)) }
|
onUserRemoved = { eventSink(SelectUsersEvents.RemoveFromSelection(it)) }
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -91,7 +91,7 @@ fun SelectMembersView(
|
||||||
|
|
||||||
@OptIn(ExperimentalMaterial3Api::class)
|
@OptIn(ExperimentalMaterial3Api::class)
|
||||||
@Composable
|
@Composable
|
||||||
fun SelectMembersViewTopBar(
|
fun SelectUsersViewTopBar(
|
||||||
hasSelectedUsers: Boolean,
|
hasSelectedUsers: Boolean,
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
onBackPressed: () -> Unit = {},
|
onBackPressed: () -> Unit = {},
|
||||||
|
|
@ -123,7 +123,7 @@ fun SelectMembersViewTopBar(
|
||||||
}
|
}
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun SelectedMembersList(
|
fun SelectedUsersList(
|
||||||
selectedUsers: List<MatrixUser>,
|
selectedUsers: List<MatrixUser>,
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
onUserRemoved: (MatrixUser) -> Unit = {},
|
onUserRemoved: (MatrixUser) -> Unit = {},
|
||||||
|
|
@ -133,7 +133,7 @@ fun SelectedMembersList(
|
||||||
horizontalArrangement = Arrangement.spacedBy(24.dp),
|
horizontalArrangement = Arrangement.spacedBy(24.dp),
|
||||||
) {
|
) {
|
||||||
items(selectedUsers) { matrixUser ->
|
items(selectedUsers) { matrixUser ->
|
||||||
SelectedMember(
|
SelectedUser(
|
||||||
matrixUser = matrixUser,
|
matrixUser = matrixUser,
|
||||||
onUserRemoved = onUserRemoved,
|
onUserRemoved = onUserRemoved,
|
||||||
)
|
)
|
||||||
|
|
@ -142,7 +142,7 @@ fun SelectedMembersList(
|
||||||
}
|
}
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun SelectedMember(
|
fun SelectedUser(
|
||||||
matrixUser: MatrixUser,
|
matrixUser: MatrixUser,
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
onUserRemoved: (MatrixUser) -> Unit,
|
onUserRemoved: (MatrixUser) -> Unit,
|
||||||
|
|
@ -151,7 +151,6 @@ fun SelectedMember(
|
||||||
Column(
|
Column(
|
||||||
horizontalAlignment = Alignment.CenterHorizontally,
|
horizontalAlignment = Alignment.CenterHorizontally,
|
||||||
) {
|
) {
|
||||||
// TODO set the size using custom Avatar size set to 56.dp
|
|
||||||
Avatar(matrixUser.avatarData)
|
Avatar(matrixUser.avatarData)
|
||||||
Text(
|
Text(
|
||||||
text = matrixUser.username.orEmpty(),
|
text = matrixUser.username.orEmpty(),
|
||||||
|
|
@ -179,15 +178,15 @@ fun SelectedMember(
|
||||||
|
|
||||||
@Preview
|
@Preview
|
||||||
@Composable
|
@Composable
|
||||||
internal fun ChangeServerViewLightPreview(@PreviewParameter(SelectMembersStateProvider::class) state: SelectMembersState) =
|
internal fun ChangeServerViewLightPreview(@PreviewParameter(SelectUsersStateProvider::class) state: SelectUsersState) =
|
||||||
ElementPreviewLight { ContentToPreview(state) }
|
ElementPreviewLight { ContentToPreview(state) }
|
||||||
|
|
||||||
@Preview
|
@Preview
|
||||||
@Composable
|
@Composable
|
||||||
internal fun ChangeServerViewDarkPreview(@PreviewParameter(SelectMembersStateProvider::class) state: SelectMembersState) =
|
internal fun ChangeServerViewDarkPreview(@PreviewParameter(SelectUsersStateProvider::class) state: SelectUsersState) =
|
||||||
ElementPreviewDark { ContentToPreview(state) }
|
ElementPreviewDark { ContentToPreview(state) }
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
private fun ContentToPreview(state: SelectMembersState) {
|
private fun ContentToPreview(state: SelectUsersState) {
|
||||||
SelectMembersView(state = state)
|
SelectUsersView(state = state)
|
||||||
}
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue