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