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