on show voice call only option in DMs
This commit is contained in:
@@ -271,6 +271,7 @@ class MessagesPresenter(
|
||||
|
||||
return MessagesState(
|
||||
roomId = room.roomId,
|
||||
isDm = roomInfo.isDm,
|
||||
roomName = roomInfo.name,
|
||||
roomAvatar = roomAvatar,
|
||||
heroes = heroes,
|
||||
|
||||
@@ -32,6 +32,7 @@ import kotlinx.collections.immutable.ImmutableList
|
||||
data class MessagesState(
|
||||
val roomId: RoomId,
|
||||
val roomName: String?,
|
||||
val isDm: Boolean,
|
||||
val roomAvatar: AvatarData,
|
||||
val heroes: ImmutableList<AvatarData>,
|
||||
val userEventPermissions: UserEventPermissions,
|
||||
|
||||
@@ -126,6 +126,7 @@ fun aMessagesState(
|
||||
) = MessagesState(
|
||||
roomId = RoomId("!id:domain"),
|
||||
roomName = roomName,
|
||||
isDm = false,
|
||||
roomAvatar = roomAvatar,
|
||||
heroes = persistentListOf(),
|
||||
userEventPermissions = userEventPermissions,
|
||||
|
||||
@@ -67,6 +67,8 @@ private fun StandByCallMenuItem(
|
||||
modifier: Modifier = Modifier,
|
||||
) {
|
||||
Row(modifier = modifier) {
|
||||
// Only show voice call in DMs
|
||||
if (roomCallState.isDM) {
|
||||
IconButton(
|
||||
modifier = modifier,
|
||||
onClick = { onJoinCallClick(true) },
|
||||
@@ -77,6 +79,7 @@ private fun StandByCallMenuItem(
|
||||
contentDescription = stringResource(CommonStrings.a11y_start_call),
|
||||
)
|
||||
}
|
||||
}
|
||||
IconButton(
|
||||
modifier = modifier,
|
||||
onClick = { onJoinCallClick(false) },
|
||||
|
||||
@@ -18,6 +18,7 @@ sealed interface RoomCallState {
|
||||
|
||||
data class StandBy(
|
||||
val canStartCall: Boolean,
|
||||
val isDM: Boolean,
|
||||
// TODO: add is DM to know if should show the voice call option?
|
||||
) : RoomCallState
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@ open class RoomCallStateProvider : PreviewParameterProvider<RoomCallState> {
|
||||
override val values: Sequence<RoomCallState> = sequenceOf(
|
||||
aStandByCallState(),
|
||||
aStandByCallState(canStartCall = false),
|
||||
aStandByCallState(canStartCall = false, isDM = true),
|
||||
anOngoingCallState(),
|
||||
anOngoingCallState(canJoinCall = false),
|
||||
anOngoingCallState(canJoinCall = true, isUserInTheCall = true),
|
||||
@@ -36,6 +37,8 @@ fun anOngoingCallState(
|
||||
|
||||
fun aStandByCallState(
|
||||
canStartCall: Boolean = true,
|
||||
isDM: Boolean = false,
|
||||
) = RoomCallState.StandBy(
|
||||
canStartCall = canStartCall,
|
||||
isDM
|
||||
)
|
||||
|
||||
@@ -21,6 +21,7 @@ import io.element.android.features.enterprise.api.SessionEnterpriseService
|
||||
import io.element.android.features.roomcall.api.RoomCallState
|
||||
import io.element.android.libraries.architecture.Presenter
|
||||
import io.element.android.libraries.matrix.api.room.JoinedRoom
|
||||
import io.element.android.libraries.matrix.api.room.isDm
|
||||
import io.element.android.libraries.matrix.api.room.powerlevels.canCall
|
||||
import io.element.android.libraries.matrix.api.room.powerlevels.permissionsAsState
|
||||
|
||||
@@ -59,7 +60,10 @@ class RoomCallStatePresenter(
|
||||
// TODO resolve intent while the call is ongoing
|
||||
isAudioCall = false
|
||||
)
|
||||
else -> RoomCallState.StandBy(canStartCall = canJoinCall)
|
||||
else -> RoomCallState.StandBy(
|
||||
canStartCall = canJoinCall,
|
||||
isDM = roomInfo.isDm
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -357,11 +357,14 @@ private fun MainActionsSection(
|
||||
}
|
||||
if (state.roomCallState.hasPermissionToJoin()) {
|
||||
// TODO Improve the view depending on all the cases here?
|
||||
if (state.roomType is RoomDetailsType.Dm) {
|
||||
// As per design, only show voice call in DM
|
||||
MainActionButton(
|
||||
title = stringResource(CommonStrings.action_call),
|
||||
imageVector = CompoundIcons.VoiceCall(),
|
||||
onClick = { onCall(CallIntent.AUDIO) },
|
||||
)
|
||||
}
|
||||
|
||||
MainActionButton(
|
||||
title = stringResource(CommonStrings.common_video),
|
||||
|
||||
Reference in New Issue
Block a user