Take into account hiding avatars from invitation
This commit is contained in:
committed by
Benoit Marty
parent
81d82fb0de
commit
a0ec8658af
+5
-2
@@ -54,6 +54,7 @@ import io.element.android.libraries.ui.strings.CommonStrings
|
|||||||
internal fun HomeSpaceItemView(
|
internal fun HomeSpaceItemView(
|
||||||
spaceRoom: SpaceRoom,
|
spaceRoom: SpaceRoom,
|
||||||
showUnreadIndicator: Boolean,
|
showUnreadIndicator: Boolean,
|
||||||
|
hideAvatars: Boolean,
|
||||||
onClick: () -> Unit,
|
onClick: () -> Unit,
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
) {
|
) {
|
||||||
@@ -61,6 +62,7 @@ internal fun HomeSpaceItemView(
|
|||||||
modifier = modifier,
|
modifier = modifier,
|
||||||
spaceRoom = spaceRoom,
|
spaceRoom = spaceRoom,
|
||||||
onClick = onClick,
|
onClick = onClick,
|
||||||
|
hideAvatars = hideAvatars,
|
||||||
onLongClick = { },
|
onLongClick = { },
|
||||||
) {
|
) {
|
||||||
NameAndIndicatorRow(
|
NameAndIndicatorRow(
|
||||||
@@ -151,7 +153,7 @@ private fun SpaceScaffoldRow(
|
|||||||
onClick: () -> Unit,
|
onClick: () -> Unit,
|
||||||
onLongClick: () -> Unit,
|
onLongClick: () -> Unit,
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
hideAvatarImage: Boolean,
|
hideAvatars: Boolean,
|
||||||
content: @Composable ColumnScope.() -> Unit
|
content: @Composable ColumnScope.() -> Unit
|
||||||
) {
|
) {
|
||||||
val clickModifier = Modifier
|
val clickModifier = Modifier
|
||||||
@@ -173,7 +175,7 @@ private fun SpaceScaffoldRow(
|
|||||||
Avatar(
|
Avatar(
|
||||||
avatarData = spaceRoom.getAvatarData(AvatarSize.SpaceListItem),
|
avatarData = spaceRoom.getAvatarData(AvatarSize.SpaceListItem),
|
||||||
avatarType = AvatarType.Space(),
|
avatarType = AvatarType.Space(),
|
||||||
hideImage = hideAvatarImage,
|
hideImage = hideAvatars,
|
||||||
)
|
)
|
||||||
Spacer(modifier = Modifier.width(16.dp))
|
Spacer(modifier = Modifier.width(16.dp))
|
||||||
Column(
|
Column(
|
||||||
@@ -189,6 +191,7 @@ internal fun HomeSpaceItemViewPreview(@PreviewParameter(SpaceRoomProvider::class
|
|||||||
HomeSpaceItemView(
|
HomeSpaceItemView(
|
||||||
spaceRoom = spaceRoom,
|
spaceRoom = spaceRoom,
|
||||||
showUnreadIndicator = false,
|
showUnreadIndicator = false,
|
||||||
|
hideAvatars = true,
|
||||||
onClick = {},
|
onClick = {},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
+8
@@ -14,6 +14,7 @@ import androidx.compose.runtime.remember
|
|||||||
import io.element.android.features.invite.api.SeenInvitesStore
|
import io.element.android.features.invite.api.SeenInvitesStore
|
||||||
import io.element.android.features.invite.api.seenSpaceIds
|
import io.element.android.features.invite.api.seenSpaceIds
|
||||||
import io.element.android.libraries.architecture.Presenter
|
import io.element.android.libraries.architecture.Presenter
|
||||||
|
import io.element.android.libraries.core.coroutine.mapState
|
||||||
import io.element.android.libraries.matrix.api.MatrixClient
|
import io.element.android.libraries.matrix.api.MatrixClient
|
||||||
import kotlinx.collections.immutable.persistentSetOf
|
import kotlinx.collections.immutable.persistentSetOf
|
||||||
import kotlinx.collections.immutable.toPersistentSet
|
import kotlinx.collections.immutable.toPersistentSet
|
||||||
@@ -26,6 +27,12 @@ class HomeSpacesPresenter @Inject constructor(
|
|||||||
) : Presenter<HomeSpacesState> {
|
) : Presenter<HomeSpacesState> {
|
||||||
@Composable
|
@Composable
|
||||||
override fun present(): HomeSpacesState {
|
override fun present(): HomeSpacesState {
|
||||||
|
val hideInvitesAvatar by remember {
|
||||||
|
client
|
||||||
|
.mediaPreviewService()
|
||||||
|
.mediaPreviewConfigFlow
|
||||||
|
.mapState { config -> config.hideInviteAvatar }
|
||||||
|
}.collectAsState()
|
||||||
val spaceRooms by client.spaceService.spaceRooms.collectAsState(emptyList())
|
val spaceRooms by client.spaceService.spaceRooms.collectAsState(emptyList())
|
||||||
val seenSpaceInvites by remember {
|
val seenSpaceInvites by remember {
|
||||||
seenInvitesStore.seenSpaceIds().map { it.toPersistentSet() }
|
seenInvitesStore.seenSpaceIds().map { it.toPersistentSet() }
|
||||||
@@ -38,6 +45,7 @@ class HomeSpacesPresenter @Inject constructor(
|
|||||||
return HomeSpacesState(
|
return HomeSpacesState(
|
||||||
spaceRooms = spaceRooms,
|
spaceRooms = spaceRooms,
|
||||||
seenSpaceInvites = seenSpaceInvites,
|
seenSpaceInvites = seenSpaceInvites,
|
||||||
|
hideInvitesAvatar = hideInvitesAvatar,
|
||||||
eventSink = ::handleEvents,
|
eventSink = ::handleEvents,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
+1
@@ -14,5 +14,6 @@ import kotlinx.collections.immutable.ImmutableSet
|
|||||||
data class HomeSpacesState(
|
data class HomeSpacesState(
|
||||||
val spaceRooms: List<SpaceRoom>,
|
val spaceRooms: List<SpaceRoom>,
|
||||||
val seenSpaceInvites: ImmutableSet<SpaceId>,
|
val seenSpaceInvites: ImmutableSet<SpaceId>,
|
||||||
|
val hideInvitesAvatar: Boolean,
|
||||||
val eventSink: (HomeSpacesEvents) -> Unit,
|
val eventSink: (HomeSpacesEvents) -> Unit,
|
||||||
)
|
)
|
||||||
|
|||||||
+2
@@ -27,10 +27,12 @@ open class HomeSpacesStateProvider : PreviewParameterProvider<HomeSpacesState> {
|
|||||||
internal fun aHomeSpacesState(
|
internal fun aHomeSpacesState(
|
||||||
spaceRooms: List<SpaceRoom> = aListOfSpaceRooms(),
|
spaceRooms: List<SpaceRoom> = aListOfSpaceRooms(),
|
||||||
seenSpaceInvites: Set<SpaceId> = emptySet(),
|
seenSpaceInvites: Set<SpaceId> = emptySet(),
|
||||||
|
hideInvitesAvatar: Boolean = false,
|
||||||
eventSink: (HomeSpacesEvents) -> Unit = {},
|
eventSink: (HomeSpacesEvents) -> Unit = {},
|
||||||
) = HomeSpacesState(
|
) = HomeSpacesState(
|
||||||
spaceRooms = spaceRooms,
|
spaceRooms = spaceRooms,
|
||||||
seenSpaceInvites = seenSpaceInvites.toImmutableSet(),
|
seenSpaceInvites = seenSpaceInvites.toImmutableSet(),
|
||||||
|
hideInvitesAvatar = hideInvitesAvatar,
|
||||||
eventSink = eventSink,
|
eventSink = eventSink,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
+3
-1
@@ -25,9 +25,11 @@ fun HomeSpacesView(
|
|||||||
LazyColumn(modifier) {
|
LazyColumn(modifier) {
|
||||||
state.spaceRooms.forEach {
|
state.spaceRooms.forEach {
|
||||||
item(it.spaceId) {
|
item(it.spaceId) {
|
||||||
|
val isInvitation = it.state == CurrentUserMembership.INVITED
|
||||||
HomeSpaceItemView(
|
HomeSpaceItemView(
|
||||||
spaceRoom = it,
|
spaceRoom = it,
|
||||||
showUnreadIndicator = it.state == CurrentUserMembership.INVITED && it.spaceId !in state.seenSpaceInvites,
|
showUnreadIndicator = isInvitation && it.spaceId !in state.seenSpaceInvites,
|
||||||
|
hideAvatars = isInvitation && state.hideInvitesAvatar,
|
||||||
onClick = {
|
onClick = {
|
||||||
onSpaceClick(it.spaceId)
|
onSpaceClick(it.spaceId)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user