Support incoming audio only calls
This commit is contained in:
@@ -55,6 +55,7 @@ import io.element.android.libraries.matrix.api.core.EventId
|
||||
import io.element.android.libraries.matrix.api.core.RoomId
|
||||
import io.element.android.libraries.matrix.api.core.UserId
|
||||
import io.element.android.libraries.matrix.api.core.toRoomIdOrAlias
|
||||
import io.element.android.libraries.matrix.api.notification.CallIntent
|
||||
import io.element.android.libraries.matrix.api.permalink.PermalinkData
|
||||
import io.element.android.libraries.matrix.api.room.JoinedRoom
|
||||
import io.element.android.libraries.matrix.api.verification.VerificationRequest
|
||||
@@ -223,12 +224,11 @@ class RoomDetailsFlowNode(
|
||||
backstack.push(NavTarget.RoomMemberDetails(userId))
|
||||
}
|
||||
|
||||
override fun navigateToRoomCall() {
|
||||
override fun navigateToRoomCall(callIntent: CallIntent) {
|
||||
val inputs = CallType.RoomCall(
|
||||
sessionId = room.sessionId,
|
||||
roomId = room.roomId,
|
||||
// TODO
|
||||
voiceIntent = false
|
||||
voiceIntent = callIntent == CallIntent.AUDIO
|
||||
)
|
||||
analyticsService.captureInteraction(Interaction.Name.MobileRoomCallButton)
|
||||
elementCallEntryPoint.startCall(inputs)
|
||||
@@ -286,13 +286,12 @@ class RoomDetailsFlowNode(
|
||||
callback.navigateToRoom(roomId, emptyList())
|
||||
}
|
||||
|
||||
override fun startCall(dmRoomId: RoomId) {
|
||||
override fun startCall(dmRoomId: RoomId, callIntent: CallIntent) {
|
||||
elementCallEntryPoint.startCall(
|
||||
CallType.RoomCall(
|
||||
roomId = dmRoomId,
|
||||
sessionId = room.sessionId,
|
||||
// TODO
|
||||
voiceIntent = false
|
||||
voiceIntent = callIntent == CallIntent.AUDIO
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
@@ -29,6 +29,7 @@ import io.element.android.libraries.architecture.appyx.launchMolecule
|
||||
import io.element.android.libraries.architecture.callback
|
||||
import io.element.android.libraries.di.RoomScope
|
||||
import io.element.android.libraries.matrix.api.core.UserId
|
||||
import io.element.android.libraries.matrix.api.notification.CallIntent
|
||||
import io.element.android.libraries.matrix.api.room.BaseRoom
|
||||
import io.element.android.services.analytics.api.AnalyticsService
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
@@ -59,7 +60,7 @@ class RoomDetailsNode(
|
||||
fun navigateToKnockRequestsList()
|
||||
fun navigateToSecurityAndPrivacy()
|
||||
fun navigateToRoomMemberDetails(userId: UserId)
|
||||
fun navigateToRoomCall()
|
||||
fun navigateToRoomCall(callIntent: CallIntent)
|
||||
fun navigateToReportRoom()
|
||||
fun navigateToSelectNewOwnersWhenLeaving()
|
||||
}
|
||||
|
||||
@@ -79,6 +79,7 @@ import io.element.android.libraries.designsystem.utils.snackbar.rememberSnackbar
|
||||
import io.element.android.libraries.matrix.api.core.RoomAlias
|
||||
import io.element.android.libraries.matrix.api.core.RoomId
|
||||
import io.element.android.libraries.matrix.api.core.UserId
|
||||
import io.element.android.libraries.matrix.api.notification.CallIntent
|
||||
import io.element.android.libraries.matrix.api.room.RoomMember
|
||||
import io.element.android.libraries.matrix.api.room.RoomNotificationMode
|
||||
import io.element.android.libraries.matrix.api.room.getBestName
|
||||
@@ -105,7 +106,7 @@ fun RoomDetailsView(
|
||||
openPollHistory: () -> Unit,
|
||||
openMediaGallery: () -> Unit,
|
||||
openAdminSettings: () -> Unit,
|
||||
onJoinCallClick: () -> Unit,
|
||||
onJoinCallClick: (CallIntent) -> Unit,
|
||||
onPinnedMessagesClick: () -> Unit,
|
||||
onKnockRequestsClick: () -> Unit,
|
||||
onSecurityAndPrivacyClick: () -> Unit,
|
||||
@@ -327,7 +328,7 @@ private fun MainActionsSection(
|
||||
state: RoomDetailsState,
|
||||
onShareRoom: () -> Unit,
|
||||
onInvitePeople: () -> Unit,
|
||||
onCall: () -> Unit,
|
||||
onCall: (callIntent: CallIntent) -> Unit,
|
||||
) {
|
||||
Row(
|
||||
modifier = Modifier
|
||||
@@ -358,8 +359,14 @@ private fun MainActionsSection(
|
||||
// TODO Improve the view depending on all the cases here?
|
||||
MainActionButton(
|
||||
title = stringResource(CommonStrings.action_call),
|
||||
imageVector = CompoundIcons.VoiceCall(),
|
||||
onClick = { onCall(CallIntent.AUDIO) },
|
||||
)
|
||||
|
||||
MainActionButton(
|
||||
title = stringResource(CommonStrings.common_video),
|
||||
imageVector = CompoundIcons.VideoCall(),
|
||||
onClick = onCall,
|
||||
onClick = { onCall(CallIntent.VIDEO) },
|
||||
)
|
||||
}
|
||||
if (state.roomType is RoomDetailsType.Room) {
|
||||
|
||||
@@ -26,6 +26,7 @@ import io.element.android.libraries.architecture.inputs
|
||||
import io.element.android.libraries.di.RoomScope
|
||||
import io.element.android.libraries.matrix.api.core.RoomId
|
||||
import io.element.android.libraries.matrix.api.core.UserId
|
||||
import io.element.android.libraries.matrix.api.notification.CallIntent
|
||||
import io.element.android.libraries.matrix.api.permalink.PermalinkBuilder
|
||||
import io.element.android.services.analytics.api.AnalyticsService
|
||||
|
||||
@@ -67,8 +68,8 @@ class RoomMemberDetailsNode(
|
||||
callback.navigateToRoom(roomId)
|
||||
}
|
||||
|
||||
fun onStartCall(roomId: RoomId) {
|
||||
callback.startCall(roomId)
|
||||
fun onStartCall(roomId: RoomId, callIntent: CallIntent) {
|
||||
callback.startCall(roomId, callIntent)
|
||||
}
|
||||
|
||||
val state = presenter.present()
|
||||
|
||||
Reference in New Issue
Block a user