Make menu item live

This commit is contained in:
Benoit Marty 2020-05-29 10:54:09 +02:00 committed by Valere
parent 94ea857738
commit 928da82dde
4 changed files with 22 additions and 7 deletions

View File

@ -62,6 +62,9 @@ data class RoomSummary constructor(
val isFavorite: Boolean
get() = tags.any { it.name == RoomTag.ROOM_TAG_FAVOURITE }
val canStartCall: Boolean
get() = isDirect && joinedMembersCount == 2
companion object {
const val NOT_IN_BREADCRUMBS = -1
}

View File

@ -33,8 +33,6 @@ internal class DefaultRoomCallService @AssistedInject constructor(
}
override fun canStartCall(): Boolean {
return roomGetter.getRoom(roomId)?.roomSummary()?.let {
it.isDirect && it.joinedMembersCount == 2
}.orFalse()
return roomGetter.getRoom(roomId)?.roomSummary()?.canStartCall.orFalse()
}
}

View File

@ -489,9 +489,20 @@ class RoomDetailFragment @Inject constructor(
roomDetailViewModel.getOtherUserIds()?.firstOrNull()?.let {
webRtcPeerConnectionManager.startOutgoingCall(requireContext(), roomDetailArgs.roomId, it, item.itemId == R.id.video_call)
}
return true
R.id.resend_all -> {
roomDetailViewModel.handle(RoomDetailAction.ResendAll)
true
}
R.id.voice_call,
R.id.video_call -> {
roomDetailViewModel.getOtherUserIds()?.firstOrNull()?.let {
// TODO CALL We should check/ask for permission here first
webRtcPeerConnectionManager.startOutgoingCall(requireContext(), roomDetailArgs.roomId, it, item.itemId == R.id.video_call)
}
true
}
else -> super.onOptionsItemSelected(item)
}
return super.onOptionsItemSelected(item)
}
private fun displayDisabledIntegrationDialog() {

View File

@ -30,6 +30,7 @@ import com.squareup.inject.assisted.AssistedInject
import im.vector.matrix.android.api.MatrixCallback
import im.vector.matrix.android.api.MatrixPatterns
import im.vector.matrix.android.api.NoOpMatrixCallback
import im.vector.matrix.android.api.extensions.orFalse
import im.vector.matrix.android.api.query.QueryStringValue
import im.vector.matrix.android.api.session.Session
import im.vector.matrix.android.api.session.events.model.EventType
@ -121,8 +122,7 @@ class RoomDetailViewModel @AssistedInject constructor(
}
private var timelineEvents = PublishRelay.create<List<TimelineEvent>>()
var timeline = room.createTimeline(eventId, timelineSettings)
private set
val timeline = room.createTimeline(eventId, timelineSettings)
// Slot to keep a pending action during permission request
var pendingAction: RoomDetailAction? = null
@ -135,6 +135,7 @@ class RoomDetailViewModel @AssistedInject constructor(
private var trackUnreadMessages = AtomicBoolean(false)
private var mostRecentDisplayedEvent: TimelineEvent? = null
private var canDoCall = false
@AssistedInject.Factory
interface Factory {
@ -1003,6 +1004,8 @@ class RoomDetailViewModel @AssistedInject constructor(
val typingRoomMembers =
typingHelper.toTypingRoomMembers(async.invoke()?.typingRoomMemberIds.orEmpty(), room)
canDoCall = async.invoke()?.canStartCall.orFalse()
copy(
asyncRoomSummary = async,
typingRoomMembers = typingRoomMembers,