Make menu item live
This commit is contained in:
parent
94ea857738
commit
928da82dde
@ -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
|
||||
}
|
||||
|
@ -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()
|
||||
}
|
||||
}
|
||||
|
@ -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() {
|
||||
|
@ -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,
|
||||
|
Loading…
x
Reference in New Issue
Block a user