Take into account hiding avatars from invitation
This commit is contained in:
parent
81d82fb0de
commit
a0ec8658af
5 changed files with 19 additions and 3 deletions
|
|
@ -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 = {},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue