|
@@ -263,7 +263,7 @@ class CallActivity : CallBaseActivity() {
|
|
|
|
|
|
override fun onCallEndedForAll() {
|
|
|
Log.d(TAG, "A moderator ended the call for all.")
|
|
|
- hangup(true)
|
|
|
+ hangup(true, false)
|
|
|
}
|
|
|
}
|
|
|
private var callParticipantList: CallParticipantList? = null
|
|
@@ -271,7 +271,7 @@ class CallActivity : CallBaseActivity() {
|
|
|
private var isBreakoutRoom = false
|
|
|
private val localParticipantMessageListener = LocalParticipantMessageListener { token ->
|
|
|
switchToRoomToken = token
|
|
|
- hangup(true)
|
|
|
+ hangup(true,false)
|
|
|
}
|
|
|
private val offerMessageListener = OfferMessageListener { sessionId, roomType, sdp, nick ->
|
|
|
getOrCreatePeerConnectionWrapperForSessionIdAndType(
|
|
@@ -470,7 +470,7 @@ class CallActivity : CallBaseActivity() {
|
|
|
binding!!.callRecordingIndicator.visibility = View.GONE
|
|
|
}
|
|
|
}
|
|
|
- initClickListeners()
|
|
|
+ initClickListeners(isModerator)
|
|
|
binding!!.microphoneButton.setOnTouchListener(MicrophoneButtonTouchListener())
|
|
|
pulseAnimation = PulseAnimation.create().with(binding!!.microphoneButton)
|
|
|
.setDuration(310)
|
|
@@ -498,7 +498,7 @@ class CallActivity : CallBaseActivity() {
|
|
|
}
|
|
|
.setNegativeButton(R.string.nc_no) { _, _ ->
|
|
|
recordingConsentGiven = false
|
|
|
- hangup(true)
|
|
|
+ hangup(true,false)
|
|
|
}
|
|
|
|
|
|
viewThemeUtils.dialog.colorMaterialAlertDialogBackground(this, materialAlertDialogBuilder)
|
|
@@ -613,7 +613,8 @@ class CallActivity : CallBaseActivity() {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private fun initClickListeners() {
|
|
|
+ @SuppressLint("ClickableViewAccessibility")
|
|
|
+ private fun initClickListeners(isModerator:Boolean) {
|
|
|
binding!!.pictureInPictureButton.setOnClickListener { enterPipMode() }
|
|
|
|
|
|
binding!!.audioOutputButton.setOnClickListener {
|
|
@@ -663,7 +664,22 @@ class CallActivity : CallBaseActivity() {
|
|
|
).show()
|
|
|
}
|
|
|
}
|
|
|
- binding!!.hangupButton.setOnClickListener { hangup(true) }
|
|
|
+
|
|
|
+ binding!!.hangupButton.setOnClickListener {
|
|
|
+ hangup(true, false)
|
|
|
+ }
|
|
|
+
|
|
|
+ if (isModerator) {
|
|
|
+ binding!!. hangupButton.setOnLongClickListener {
|
|
|
+ showPopupMenu()
|
|
|
+ true
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ binding!!.popupMenu.setOnClickListener {
|
|
|
+ hangup(true, true)
|
|
|
+ binding!!.popupMenu.visibility = View.GONE
|
|
|
+ }
|
|
|
binding!!.switchSelfVideoButton.setOnClickListener { switchCamera() }
|
|
|
binding!!.gridview.onItemClickListener =
|
|
|
AdapterView.OnItemClickListener { _: AdapterView<*>?, _: View?, _: Int, _: Long ->
|
|
@@ -675,7 +691,7 @@ class CallActivity : CallBaseActivity() {
|
|
|
binding!!.callStates.callStateRelativeLayout.setOnClickListener {
|
|
|
if (currentCallStatus === CallStatus.CALLING_TIMEOUT) {
|
|
|
setCallState(CallStatus.RECONNECTING)
|
|
|
- hangupNetworkCalls(false)
|
|
|
+ hangupNetworkCalls(false, false)
|
|
|
}
|
|
|
}
|
|
|
binding!!.callRecordingIndicator.setOnClickListener {
|
|
@@ -699,6 +715,11 @@ class CallActivity : CallBaseActivity() {
|
|
|
binding!!.lowerHandButton.setOnClickListener { l: View? -> raiseHandViewModel!!.lowerHand() }
|
|
|
}
|
|
|
|
|
|
+ private fun showPopupMenu() {
|
|
|
+ binding!!.popupMenu.visibility = View.VISIBLE
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
private fun createCameraEnumerator() {
|
|
|
var camera2EnumeratorIsSupported = false
|
|
|
try {
|
|
@@ -1442,7 +1463,7 @@ class CallActivity : CallBaseActivity() {
|
|
|
Log.d(TAG, "localStream is null")
|
|
|
}
|
|
|
if (currentCallStatus !== CallStatus.LEAVING) {
|
|
|
- hangup(true)
|
|
|
+ hangup(true, false)
|
|
|
}
|
|
|
powerManagerUtils!!.updatePhoneState(PowerManagerUtils.PhoneState.IDLE)
|
|
|
super.onDestroy()
|
|
@@ -1726,7 +1747,7 @@ class CallActivity : CallBaseActivity() {
|
|
|
override fun onError(e: Throwable) {
|
|
|
Log.e(TAG, "Failed to join call", e)
|
|
|
Snackbar.make(binding!!.root, R.string.nc_common_error_sorry, Snackbar.LENGTH_LONG).show()
|
|
|
- hangup(true)
|
|
|
+ hangup(true, false)
|
|
|
}
|
|
|
|
|
|
override fun onComplete() {
|
|
@@ -1877,7 +1898,7 @@ class CallActivity : CallBaseActivity() {
|
|
|
Log.d(TAG, "onMessageEvent 'hello'")
|
|
|
if (!webSocketCommunicationEvent.getHashMap()!!.containsKey("oldResumeId")) {
|
|
|
if (currentCallStatus === CallStatus.RECONNECTING) {
|
|
|
- hangup(false)
|
|
|
+ hangup(false, false)
|
|
|
} else {
|
|
|
setCallState(CallStatus.RECONNECTING)
|
|
|
runOnUiThread { initiateCall() }
|
|
@@ -1953,7 +1974,7 @@ class CallActivity : CallBaseActivity() {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private fun hangup(shutDownView: Boolean) {
|
|
|
+ private fun hangup(shutDownView: Boolean, endCallForAll:Boolean) {
|
|
|
Log.d(TAG, "hangup! shutDownView=$shutDownView")
|
|
|
if (shutDownView) {
|
|
|
setCallState(CallStatus.LEAVING)
|
|
@@ -2018,17 +2039,18 @@ class CallActivity : CallBaseActivity() {
|
|
|
|
|
|
ApplicationWideCurrentRoomHolder.getInstance().isInCall = false
|
|
|
ApplicationWideCurrentRoomHolder.getInstance().isDialing = false
|
|
|
- hangupNetworkCalls(shutDownView)
|
|
|
+ hangupNetworkCalls(shutDownView,endCallForAll)
|
|
|
}
|
|
|
|
|
|
- private fun hangupNetworkCalls(shutDownView: Boolean) {
|
|
|
+ private fun hangupNetworkCalls(shutDownView: Boolean, endCallForAll: Boolean) {
|
|
|
Log.d(TAG, "hangupNetworkCalls. shutDownView=$shutDownView")
|
|
|
val apiVersion = ApiUtils.getCallApiVersion(conversationUser, intArrayOf(ApiUtils.API_V4, 1))
|
|
|
if (callParticipantList != null) {
|
|
|
callParticipantList!!.removeObserver(callParticipantListObserver)
|
|
|
callParticipantList!!.destroy()
|
|
|
}
|
|
|
- ncApi!!.leaveCall(credentials, ApiUtils.getUrlForCall(apiVersion, baseUrl, roomToken!!), false)
|
|
|
+
|
|
|
+ ncApi!!.leaveCall(credentials, ApiUtils.getUrlForCall(apiVersion, baseUrl, roomToken!!),endCallForAll)
|
|
|
.subscribeOn(Schedulers.io())
|
|
|
.observeOn(AndroidSchedulers.mainThread())
|
|
|
.subscribe(object : Observer<GenericOverall> {
|
|
@@ -2122,7 +2144,7 @@ class CallActivity : CallBaseActivity() {
|
|
|
ApplicationWideCurrentRoomHolder.getInstance().isInCall
|
|
|
) {
|
|
|
Log.d(TAG, "Most probably a moderator ended the call for all.")
|
|
|
- hangup(true)
|
|
|
+ hangup(true, false)
|
|
|
return
|
|
|
}
|
|
|
|
|
@@ -2249,7 +2271,7 @@ class CallActivity : CallBaseActivity() {
|
|
|
context.resources.getString(R.string.nc_common_error_sorry),
|
|
|
Snackbar.LENGTH_LONG
|
|
|
).show()
|
|
|
- hangup(true)
|
|
|
+ hangup(true,false)
|
|
|
return null
|
|
|
}
|
|
|
peerConnectionWrapper = if (hasMCU && publisher) {
|
|
@@ -2565,7 +2587,7 @@ class CallActivity : CallBaseActivity() {
|
|
|
}
|
|
|
|
|
|
CallStatus.CALLING_TIMEOUT -> handler!!.post {
|
|
|
- hangup(false)
|
|
|
+ hangup(false, false)
|
|
|
binding!!.callStates.callStateTextView.setText(R.string.nc_call_timeout)
|
|
|
binding!!.callModeTextView.text = descriptionForCallType
|
|
|
if (binding!!.callStates.callStateRelativeLayout.visibility != View.VISIBLE) {
|
|
@@ -2835,7 +2857,7 @@ class CallActivity : CallBaseActivity() {
|
|
|
if (iceConnectionState == IceConnectionState.FAILED) {
|
|
|
setCallState(CallStatus.PUBLISHER_FAILED)
|
|
|
webSocketClient!!.clearResumeId()
|
|
|
- hangup(false)
|
|
|
+ hangup(false, false)
|
|
|
}
|
|
|
}
|
|
|
}
|