diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpaceItemView.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpaceItemView.kt index 3b0b88a9a2..0e49d67343 100644 --- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpaceItemView.kt +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpaceItemView.kt @@ -54,6 +54,7 @@ import io.element.android.libraries.ui.strings.CommonStrings internal fun HomeSpaceItemView( spaceRoom: SpaceRoom, showUnreadIndicator: Boolean, + hideAvatars: Boolean, onClick: () -> Unit, modifier: Modifier = Modifier, ) { @@ -61,6 +62,7 @@ internal fun HomeSpaceItemView( modifier = modifier, spaceRoom = spaceRoom, onClick = onClick, + hideAvatars = hideAvatars, onLongClick = { }, ) { NameAndIndicatorRow( @@ -151,7 +153,7 @@ private fun SpaceScaffoldRow( onClick: () -> Unit, onLongClick: () -> Unit, modifier: Modifier = Modifier, - hideAvatarImage: Boolean, + hideAvatars: Boolean, content: @Composable ColumnScope.() -> Unit ) { val clickModifier = Modifier @@ -173,7 +175,7 @@ private fun SpaceScaffoldRow( Avatar( avatarData = spaceRoom.getAvatarData(AvatarSize.SpaceListItem), avatarType = AvatarType.Space(), - hideImage = hideAvatarImage, + hideImage = hideAvatars, ) Spacer(modifier = Modifier.width(16.dp)) Column( @@ -189,6 +191,7 @@ internal fun HomeSpaceItemViewPreview(@PreviewParameter(SpaceRoomProvider::class HomeSpaceItemView( spaceRoom = spaceRoom, showUnreadIndicator = false, + hideAvatars = true, onClick = {}, ) } diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesPresenter.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesPresenter.kt index bdd89257f0..580c4b2d36 100644 --- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesPresenter.kt +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesPresenter.kt @@ -14,6 +14,7 @@ import androidx.compose.runtime.remember import io.element.android.features.invite.api.SeenInvitesStore import io.element.android.features.invite.api.seenSpaceIds import io.element.android.libraries.architecture.Presenter +import io.element.android.libraries.core.coroutine.mapState import io.element.android.libraries.matrix.api.MatrixClient import kotlinx.collections.immutable.persistentSetOf import kotlinx.collections.immutable.toPersistentSet @@ -26,6 +27,12 @@ class HomeSpacesPresenter @Inject constructor( ) : Presenter { @Composable 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 seenSpaceInvites by remember { seenInvitesStore.seenSpaceIds().map { it.toPersistentSet() } @@ -38,6 +45,7 @@ class HomeSpacesPresenter @Inject constructor( return HomeSpacesState( spaceRooms = spaceRooms, seenSpaceInvites = seenSpaceInvites, + hideInvitesAvatar = hideInvitesAvatar, eventSink = ::handleEvents, ) } diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesState.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesState.kt index cc4bbd7375..9d727b2a65 100644 --- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesState.kt +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesState.kt @@ -14,5 +14,6 @@ import kotlinx.collections.immutable.ImmutableSet data class HomeSpacesState( val spaceRooms: List, val seenSpaceInvites: ImmutableSet, + val hideInvitesAvatar: Boolean, val eventSink: (HomeSpacesEvents) -> Unit, ) diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesStateProvider.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesStateProvider.kt index 546b4506ff..794fe1d16f 100644 --- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesStateProvider.kt +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesStateProvider.kt @@ -27,10 +27,12 @@ open class HomeSpacesStateProvider : PreviewParameterProvider { internal fun aHomeSpacesState( spaceRooms: List = aListOfSpaceRooms(), seenSpaceInvites: Set = emptySet(), + hideInvitesAvatar: Boolean = false, eventSink: (HomeSpacesEvents) -> Unit = {}, ) = HomeSpacesState( spaceRooms = spaceRooms, seenSpaceInvites = seenSpaceInvites.toImmutableSet(), + hideInvitesAvatar = hideInvitesAvatar, eventSink = eventSink, ) diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesView.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesView.kt index 9924105013..1f99a8b6c6 100644 --- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesView.kt +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spaces/HomeSpacesView.kt @@ -25,9 +25,11 @@ fun HomeSpacesView( LazyColumn(modifier) { state.spaceRooms.forEach { item(it.spaceId) { + val isInvitation = it.state == CurrentUserMembership.INVITED HomeSpaceItemView( spaceRoom = it, - showUnreadIndicator = it.state == CurrentUserMembership.INVITED && it.spaceId !in state.seenSpaceInvites, + showUnreadIndicator = isInvitation && it.spaceId !in state.seenSpaceInvites, + hideAvatars = isInvitation && state.hideInvitesAvatar, onClick = { onSpaceClick(it.spaceId) }