Call design: make changes on toolbar menu

This commit is contained in:
ganfra 2021-07-01 20:35:37 +02:00
parent f74a71001a
commit 4b347bb48e
5 changed files with 11 additions and 18 deletions

View File

@ -793,7 +793,8 @@ class RoomDetailFragment @Inject constructor(
}
withState(roomDetailViewModel) { state ->
// Set the visual state of the call buttons (voice/video) to enabled/disabled according to user permissions
val callButtonsEnabled = when (state.asyncRoomSummary.invoke()?.joinedMembersCount) {
val hasCallInRoom = callManager.getCallsByRoomId(state.roomId).isNotEmpty()
val callButtonsEnabled = !hasCallInRoom && when (state.asyncRoomSummary.invoke()?.joinedMembersCount) {
1 -> false
2 -> state.isAllowedToStartWebRTCCall
else -> state.isAllowedToManageWidgets
@ -845,10 +846,6 @@ class RoomDetailFragment @Inject constructor(
callActionsHandler.onVideoCallClicked()
true
}
R.id.hangup_call -> {
roomDetailViewModel.handle(RoomDetailAction.EndCall)
true
}
R.id.search -> {
handleSearchAction()
true

View File

@ -606,9 +606,8 @@ class RoomDetailViewModel @AssistedInject constructor(
R.id.timeline_setting -> true
R.id.invite -> state.canInvite
R.id.open_matrix_apps -> true
R.id.voice_call,
R.id.video_call -> callManager.getCallsByRoomId(state.roomId).isEmpty()
R.id.hangup_call -> callManager.getCallsByRoomId(state.roomId).isNotEmpty()
R.id.voice_call -> state.isWebRTCCallOptionAvailable()
R.id.video_call -> state.isWebRTCCallOptionAvailable() || !state.hasActiveJitsiWidget()
R.id.search -> true
R.id.dev_tools -> vectorPreferences.developerMode()
else -> false

View File

@ -19,6 +19,7 @@ package im.vector.app.features.home.room.detail
import com.airbnb.mvrx.Async
import com.airbnb.mvrx.MvRxState
import com.airbnb.mvrx.Uninitialized
import org.matrix.android.sdk.api.extensions.orFalse
import org.matrix.android.sdk.api.session.events.model.Event
import org.matrix.android.sdk.api.session.room.members.ChangeMembershipState
import org.matrix.android.sdk.api.session.room.model.RoomMemberSummary
@ -26,6 +27,7 @@ import org.matrix.android.sdk.api.session.room.model.RoomSummary
import org.matrix.android.sdk.api.session.room.timeline.TimelineEvent
import org.matrix.android.sdk.api.session.sync.SyncState
import org.matrix.android.sdk.api.session.widgets.model.Widget
import org.matrix.android.sdk.api.session.widgets.model.WidgetType
/**
* Describes the current send mode:
@ -85,5 +87,9 @@ data class RoomDetailViewState(
highlightedEventId = args.eventId
)
fun isWebRTCCallOptionAvailable() = (asyncRoomSummary.invoke()?.joinedMembersCount ?: 0) <= 2
fun hasActiveJitsiWidget() = activeRoomWidgets()?.any { it.type == WidgetType.Jitsi }.orFalse()
fun isDm() = asyncRoomSummary()?.isDirect == true
}

View File

@ -96,7 +96,7 @@ class StartCallActionsHandler(
}
))
} else {
if (state.activeRoomWidgets()?.filter { it.type == WidgetType.Jitsi }?.any() == true) {
if (state.hasActiveJitsiWidget()) {
// A conference is already in progress!
showDialogWithMessage(fragment.getString(R.string.conference_call_in_progress))
} else {

View File

@ -37,15 +37,6 @@
app:showAsAction="always"
tools:visible="true" />
<item
android:id="@+id/hangup_call"
android:icon="@drawable/ic_call_end"
android:title="@string/call_notification_hangup"
android:visible="false"
app:iconTint="?colorError"
app:showAsAction="always"
tools:visible="true" />
<item
android:id="@+id/open_matrix_apps"
android:title="@string/room_add_matrix_apps"