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