mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-21 17:29:32 +01:00
Add confirmation dialog for lowering a raised hand.
This commit is contained in:
committed by
Cody Henthorne
parent
c2f5a6390e
commit
9ed80d46b6
@@ -16,7 +16,7 @@ data class CallParticipant constructor(
|
||||
val isForwardingVideo: Boolean = true,
|
||||
val isVideoEnabled: Boolean = false,
|
||||
val isMicrophoneEnabled: Boolean = false,
|
||||
val isHandRaised: Boolean = false,
|
||||
val handRaisedTimestamp: Long = HAND_LOWERED,
|
||||
val lastSpoke: Long = 0,
|
||||
val audioLevel: AudioLevel? = null,
|
||||
val isMediaKeysReceived: Boolean = true,
|
||||
@@ -36,6 +36,9 @@ data class CallParticipant constructor(
|
||||
val isSelf: Boolean
|
||||
get() = recipient.isSelf
|
||||
|
||||
val isHandRaised: Boolean
|
||||
get() = handRaisedTimestamp > 0
|
||||
|
||||
fun getRecipientDisplayName(context: Context): String {
|
||||
return if (recipient.isSelf && isPrimary) {
|
||||
context.getString(R.string.CallParticipant__you)
|
||||
@@ -72,6 +75,10 @@ data class CallParticipant constructor(
|
||||
return copy(isScreenSharing = enable)
|
||||
}
|
||||
|
||||
fun withHandRaisedTimestamp(timestamp: Long): CallParticipant {
|
||||
return copy(handRaisedTimestamp = timestamp)
|
||||
}
|
||||
|
||||
enum class DeviceOrdinal {
|
||||
PRIMARY, SECONDARY
|
||||
}
|
||||
@@ -103,24 +110,28 @@ data class CallParticipant constructor(
|
||||
}
|
||||
|
||||
companion object {
|
||||
const val HAND_LOWERED = -1L
|
||||
|
||||
@JvmField
|
||||
val EMPTY: CallParticipant = CallParticipant()
|
||||
|
||||
@JvmStatic
|
||||
@JvmOverloads
|
||||
fun createLocal(
|
||||
cameraState: CameraState,
|
||||
renderer: BroadcastVideoSink,
|
||||
microphoneEnabled: Boolean,
|
||||
isHandRaised: Boolean
|
||||
handRaisedTimestamp: Long,
|
||||
callParticipantId: CallParticipantId = CallParticipantId(Recipient.self())
|
||||
): CallParticipant {
|
||||
return CallParticipant(
|
||||
callParticipantId = CallParticipantId(Recipient.self()),
|
||||
callParticipantId = callParticipantId,
|
||||
recipient = Recipient.self(),
|
||||
videoSink = renderer,
|
||||
cameraState = cameraState,
|
||||
isVideoEnabled = cameraState.isEnabled && cameraState.cameraCount > 0,
|
||||
isMicrophoneEnabled = microphoneEnabled,
|
||||
isHandRaised = isHandRaised
|
||||
handRaisedTimestamp = handRaisedTimestamp
|
||||
)
|
||||
}
|
||||
|
||||
@@ -133,7 +144,7 @@ data class CallParticipant constructor(
|
||||
isForwardingVideo: Boolean,
|
||||
audioEnabled: Boolean,
|
||||
videoEnabled: Boolean,
|
||||
isHandRaised: Boolean,
|
||||
handRaisedTimestamp: Long,
|
||||
lastSpoke: Long,
|
||||
mediaKeysReceived: Boolean,
|
||||
addedToCallTime: Long,
|
||||
@@ -148,7 +159,7 @@ data class CallParticipant constructor(
|
||||
isForwardingVideo = isForwardingVideo,
|
||||
isVideoEnabled = videoEnabled,
|
||||
isMicrophoneEnabled = audioEnabled,
|
||||
isHandRaised = isHandRaised,
|
||||
handRaisedTimestamp = handRaisedTimestamp,
|
||||
lastSpoke = lastSpoke,
|
||||
isMediaKeysReceived = mediaKeysReceived,
|
||||
addedToCallTime = addedToCallTime,
|
||||
|
||||
@@ -2,6 +2,7 @@ package org.thoughtcrime.securesms.events
|
||||
|
||||
import com.annimon.stream.OptionalLong
|
||||
import org.thoughtcrime.securesms.components.webrtc.BroadcastVideoSink
|
||||
import org.thoughtcrime.securesms.events.CallParticipant.Companion.HAND_LOWERED
|
||||
import org.thoughtcrime.securesms.events.CallParticipant.Companion.createLocal
|
||||
import org.thoughtcrime.securesms.recipients.Recipient
|
||||
import org.thoughtcrime.securesms.recipients.RecipientId
|
||||
@@ -92,7 +93,6 @@ class WebRtcViewModel(state: WebRtcServiceState) {
|
||||
val isRemoteVideoOffer: Boolean = state.getCallSetupState(state.callInfoState.activePeer?.callId).isRemoteVideoOffer
|
||||
val callConnectedTime: Long = state.callInfoState.callConnectedTime
|
||||
val remoteParticipants: List<CallParticipant> = state.callInfoState.remoteCallParticipants
|
||||
val raisedHands: List<GroupCallRaiseHandEvent> = state.callInfoState.raisedHands
|
||||
val identityChangedParticipants: Set<RecipientId> = state.callInfoState.identityChangedRecipients
|
||||
val remoteDevicesCount: OptionalLong = state.callInfoState.remoteDevicesCount
|
||||
val participantLimit: Long? = state.callInfoState.participantLimit
|
||||
@@ -107,11 +107,11 @@ class WebRtcViewModel(state: WebRtcServiceState) {
|
||||
val availableDevices: Set<SignalAudioManager.AudioDevice> = state.localDeviceState.availableDevices
|
||||
val bluetoothPermissionDenied: Boolean = state.localDeviceState.bluetoothPermissionDenied
|
||||
|
||||
val localParticipant: CallParticipant = createLocal(
|
||||
val localParticipant: CallParticipant = state.callInfoState.localParticipant ?: createLocal(
|
||||
state.localDeviceState.cameraState,
|
||||
(if (state.videoState.localSink != null) state.videoState.localSink else BroadcastVideoSink())!!,
|
||||
state.localDeviceState.isMicrophoneEnabled,
|
||||
state.callInfoState.raisedHands.map { it.sender }.contains(Recipient.self())
|
||||
HAND_LOWERED
|
||||
)
|
||||
|
||||
val isCellularConnection: Boolean = when (state.localDeviceState.networkConnectionType) {
|
||||
|
||||
Reference in New Issue
Block a user