From e73ddaee05543f8bf22820317a5f671ce78d4e1a Mon Sep 17 00:00:00 2001 From: RakshakGaind <117909304+RakshakGaind0910@users.noreply.github.com> Date: Wed, 15 Feb 2023 16:55:41 +0530 Subject: [PATCH] Disconnect callback issue fixed (#274) * Disconnect callback issue fixed added notification permission for android 13 * Disconnect callback issue fixed added notification permission for android 13 * Disconnect callback issue fixed added notification permission for android 13 * Disconnect callback issue fixed added notification permission for android 13 * Disconnect callback issue fixed added notification permission for android 13 --- app/src/main/AndroidManifest.xml | 2 +- .../com/telnyx/webrtc/sdk/ui/MainActivity.kt | 88 ++++++++++++------- .../com/telnyx/webrtc/sdk/TelnyxClient.kt | 3 +- .../com/telnyx/webrtc/sdk/socket/TxSocket.kt | 2 + .../telnyx/webrtc/sdk/socket/TxSocketTest.kt | 8 +- 5 files changed, 67 insertions(+), 36 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index c1814d37..c4b2bb5e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -11,7 +11,7 @@ - + = Build.VERSION_CODES.TIRAMISU) { + Dexter.withContext(this) + .withPermissions( + RECORD_AUDIO, Manifest.permission.POST_NOTIFICATIONS + ) + .withListener(object : MultiplePermissionsListener { + override fun onPermissionsChecked(report: MultiplePermissionsReport?) { + if (report!!.areAllPermissionsGranted()) { + connect_button_id.isClickable = true + } else if (report.isAnyPermissionPermanentlyDenied) { + Toast.makeText( + this@MainActivity, + "permissions are required to continue", + Toast.LENGTH_LONG + ).show() + } } - } - override fun onPermissionRationaleShouldBeShown( - permission: MutableList?, - token: PermissionToken? - ) { - token?.continuePermissionRequest() - } - }).check() + override fun onPermissionRationaleShouldBeShown( + permission: MutableList?, + token: PermissionToken? + ) { + token?.continuePermissionRequest() + } + }).check() + } else { + Dexter.withContext(this) + .withPermissions( + RECORD_AUDIO, + INTERNET + ) + .withListener(object : MultiplePermissionsListener { + override fun onPermissionsChecked(report: MultiplePermissionsReport?) { + if (report!!.areAllPermissionsGranted()) { + connect_button_id.isClickable = true + } else if (report.isAnyPermissionPermanentlyDenied) { + Toast.makeText( + this@MainActivity, + "permissions are required to continue", + Toast.LENGTH_LONG + ).show() + } + } + + override fun onPermissionRationaleShouldBeShown( + permission: MutableList?, + token: PermissionToken? + ) { + token?.continuePermissionRequest() + } + }).check() + } } private fun handleCallNotification() { diff --git a/telnyx_rtc/src/main/java/com/telnyx/webrtc/sdk/TelnyxClient.kt b/telnyx_rtc/src/main/java/com/telnyx/webrtc/sdk/TelnyxClient.kt index f996ffb0..24042dde 100644 --- a/telnyx_rtc/src/main/java/com/telnyx/webrtc/sdk/TelnyxClient.kt +++ b/telnyx_rtc/src/main/java/com/telnyx/webrtc/sdk/TelnyxClient.kt @@ -724,7 +724,8 @@ class TelnyxClient( * @see [ConnectivityHelper] * @see [TxSocket] */ - fun disconnect() { + fun disconnect(disconnectMessage: String = "Socket disconnected") { + socketResponseLiveData.postValue(SocketResponse.error(disconnectMessage)) invalidateGatewayResponseTimer() resetGatewayCounters() unregisterNetworkCallback() diff --git a/telnyx_rtc/src/main/java/com/telnyx/webrtc/sdk/socket/TxSocket.kt b/telnyx_rtc/src/main/java/com/telnyx/webrtc/sdk/socket/TxSocket.kt index e0ea3ecd..e777d265 100644 --- a/telnyx_rtc/src/main/java/com/telnyx/webrtc/sdk/socket/TxSocket.kt +++ b/telnyx_rtc/src/main/java/com/telnyx/webrtc/sdk/socket/TxSocket.kt @@ -203,12 +203,14 @@ class TxSocket( override fun onClosing(webSocket: WebSocket, code: Int, reason: String) { super.onClosing(webSocket, code, reason) Timber.tag("TxSocket").i("Socket is closing: $code :: $reason") + listener.disconnect("Socket is closed: $code :: $reason") } override fun onClosed(webSocket: WebSocket, code: Int, reason: String) { super.onClosed(webSocket, code, reason) Timber.tag("TxSocket").i("Socket is closed: $code :: $reason") destroy() + listener.disconnect("Socket is closed: $code :: $reason") } override fun onFailure(webSocket: WebSocket, t: Throwable, response: Response?) { diff --git a/telnyx_rtc/src/test/java/com/telnyx/webrtc/sdk/socket/TxSocketTest.kt b/telnyx_rtc/src/test/java/com/telnyx/webrtc/sdk/socket/TxSocketTest.kt index 99a1d3e5..3f1dc447 100644 --- a/telnyx_rtc/src/test/java/com/telnyx/webrtc/sdk/socket/TxSocketTest.kt +++ b/telnyx_rtc/src/test/java/com/telnyx/webrtc/sdk/socket/TxSocketTest.kt @@ -131,6 +131,10 @@ class TxSocketTest : BaseTest() { // Sleep to give time to connect Thread.sleep(6000) verify(client, times(1)).onConnectionEstablished() + client.pingPong() + Thread.sleep(30000) + verify(client, times(2)).pingPong() + socket.isPing shouldBe true } @Test @@ -169,10 +173,6 @@ class TxSocketTest : BaseTest() { // Sleep to give time to connect Thread.sleep(6000) verify(client, times(1)).onConnectionEstablished() - client.pingPong() - Thread.sleep(30000) - verify(client, times(2)).pingPong() - socket.isPing shouldBe true } @Test