From 17d913c35100f95a29c54302d08e932a88600622 Mon Sep 17 00:00:00 2001 From: RakshakGaind <117909304+RakshakGaind0910@users.noreply.github.com> Date: Fri, 3 Mar 2023 19:01:01 +0530 Subject: [PATCH] Add dedicated function for disconnect callback (#279) * Add dedicated function for disconnect callback * Update readme.md file --- README.md | 4 ++++ .../com/telnyx/webrtc/sdk/ui/CallInstanceFragment.kt | 8 ++++++-- .../main/java/com/telnyx/webrtc/sdk/ui/MainActivity.kt | 9 +++++++++ .../main/java/com/telnyx/webrtc/sdk/ui/MainViewModel.kt | 2 +- telnyx_rtc/src/main/java/com/telnyx/webrtc/sdk/Call.kt | 4 ++++ .../src/main/java/com/telnyx/webrtc/sdk/TelnyxClient.kt | 4 ++-- .../java/com/telnyx/webrtc/sdk/model/SocketStatus.kt | 4 +++- .../main/java/com/telnyx/webrtc/sdk/socket/TxSocket.kt | 8 ++++---- .../com/telnyx/webrtc/sdk/socket/TxSocketListener.kt | 4 ++++ .../telnyx/webrtc/sdk/verto/receive/SocketObserver.kt | 2 ++ .../telnyx/webrtc/sdk/verto/receive/SocketResponse.kt | 3 +++ .../test/java/com/telnyx/webrtc/sdk/TelnyxClientTest.kt | 2 +- .../java/com/telnyx/webrtc/sdk/socket/TxSocketTest.kt | 2 +- 13 files changed, 44 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index a1392398..4f1c03cc 100644 --- a/README.md +++ b/README.md @@ -185,6 +185,10 @@ We can then use this method to create a listener that listens for an invitation // Handle errors - Update UI or Navigate to new screen, etc. } + override fun onSocketDisconnect() { + // Handle disconnect - Update UI or Navigate to login screen, etc. + } + }) ``` diff --git a/app/src/main/java/com/telnyx/webrtc/sdk/ui/CallInstanceFragment.kt b/app/src/main/java/com/telnyx/webrtc/sdk/ui/CallInstanceFragment.kt index 46921784..c46f04ac 100644 --- a/app/src/main/java/com/telnyx/webrtc/sdk/ui/CallInstanceFragment.kt +++ b/app/src/main/java/com/telnyx/webrtc/sdk/ui/CallInstanceFragment.kt @@ -139,6 +139,10 @@ class CallInstanceFragment : Fragment(R.layout.fragment_call_instance), NumberKe //NOOP } + override fun onSocketDisconnect() { + //NOOP + } + }) } @@ -160,12 +164,12 @@ class CallInstanceFragment : Fragment(R.layout.fragment_call_instance), NumberKe } override fun onLeftAuxButtonClicked() { - //NOOP + //NOOP } override fun onNumberClicked(number: Int) { mainViewModel.dtmfPressed(callId!!, number.toString()) - when(number) { + when (number) { 0 -> { toneGenerator.startTone(TONE_DTMF_0, 500) } diff --git a/app/src/main/java/com/telnyx/webrtc/sdk/ui/MainActivity.kt b/app/src/main/java/com/telnyx/webrtc/sdk/ui/MainActivity.kt index 1e335b2e..b9b05805 100644 --- a/app/src/main/java/com/telnyx/webrtc/sdk/ui/MainActivity.kt +++ b/app/src/main/java/com/telnyx/webrtc/sdk/ui/MainActivity.kt @@ -216,6 +216,15 @@ class MainActivity : AppCompatActivity() { message ?: "Socket Connection Error", Toast.LENGTH_SHORT ).show() + } + + override fun onSocketDisconnect() { + Toast.makeText( + this@MainActivity, + "Socket is disconnected", + Toast.LENGTH_SHORT + ).show() + progress_indicator_id.visibility = View.INVISIBLE incoming_call_section_id.visibility = View.GONE call_control_section_id.visibility = View.GONE diff --git a/app/src/main/java/com/telnyx/webrtc/sdk/ui/MainViewModel.kt b/app/src/main/java/com/telnyx/webrtc/sdk/ui/MainViewModel.kt index fae9d1fc..d26bb365 100644 --- a/app/src/main/java/com/telnyx/webrtc/sdk/ui/MainViewModel.kt +++ b/app/src/main/java/com/telnyx/webrtc/sdk/ui/MainViewModel.kt @@ -130,7 +130,7 @@ class MainViewModel @Inject constructor( } fun disconnect() { - telnyxClient?.disconnect() + telnyxClient?.onDisconnect() userManager.isUserLogin = false } diff --git a/telnyx_rtc/src/main/java/com/telnyx/webrtc/sdk/Call.kt b/telnyx_rtc/src/main/java/com/telnyx/webrtc/sdk/Call.kt index 091da559..c295671b 100644 --- a/telnyx_rtc/src/main/java/com/telnyx/webrtc/sdk/Call.kt +++ b/telnyx_rtc/src/main/java/com/telnyx/webrtc/sdk/Call.kt @@ -601,6 +601,10 @@ class Call( //NOOP } + override fun onDisconnect() { + //NOOP + } + override fun onClientReady(jsonObject: JsonObject) { // NOOP } 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 24042dde..5c7739dc 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,8 +724,8 @@ class TelnyxClient( * @see [ConnectivityHelper] * @see [TxSocket] */ - fun disconnect(disconnectMessage: String = "Socket disconnected") { - socketResponseLiveData.postValue(SocketResponse.error(disconnectMessage)) + override fun onDisconnect() { + socketResponseLiveData.postValue(SocketResponse.disconnect()) invalidateGatewayResponseTimer() resetGatewayCounters() unregisterNetworkCallback() diff --git a/telnyx_rtc/src/main/java/com/telnyx/webrtc/sdk/model/SocketStatus.kt b/telnyx_rtc/src/main/java/com/telnyx/webrtc/sdk/model/SocketStatus.kt index cbde155b..453625a3 100644 --- a/telnyx_rtc/src/main/java/com/telnyx/webrtc/sdk/model/SocketStatus.kt +++ b/telnyx_rtc/src/main/java/com/telnyx/webrtc/sdk/model/SocketStatus.kt @@ -12,10 +12,12 @@ package com.telnyx.webrtc.sdk.model * @property MESSAGERECEIVED the socket has received a message * @property ERROR the socket has encountered an error * @property LOADING the socket is loading a connection + * @property DISCONNECT when the socket is disconnect */ enum class SocketStatus { ESTABLISHED, MESSAGERECEIVED, ERROR, - LOADING + LOADING, + DISCONNECT } 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 e777d265..2e6703a9 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 @@ -40,7 +40,7 @@ class TxSocket( internal var ongoingCall = false internal var isLoggedIn = false internal var isConnected = false - internal var isPing=false + internal var isPing = false private lateinit var client: OkHttpClient private lateinit var socket: WebSocket @@ -171,7 +171,7 @@ class TxSocket( } PINGPONG.methodName -> { - isPing =true + isPing = true webSocket.send(text) listener.pingPong() } @@ -203,14 +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") + listener.onDisconnect() } 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") + listener.onDisconnect() } override fun onFailure(webSocket: WebSocket, t: Throwable, response: Response?) { diff --git a/telnyx_rtc/src/main/java/com/telnyx/webrtc/sdk/socket/TxSocketListener.kt b/telnyx_rtc/src/main/java/com/telnyx/webrtc/sdk/socket/TxSocketListener.kt index a24f6c9e..4d15b1b8 100644 --- a/telnyx_rtc/src/main/java/com/telnyx/webrtc/sdk/socket/TxSocketListener.kt +++ b/telnyx_rtc/src/main/java/com/telnyx/webrtc/sdk/socket/TxSocketListener.kt @@ -97,4 +97,8 @@ interface TxSocketListener { fun setCallRecovering() fun pingPong() + /** + * Fires when the socket has disconnected + * */ + fun onDisconnect() } diff --git a/telnyx_rtc/src/main/java/com/telnyx/webrtc/sdk/verto/receive/SocketObserver.kt b/telnyx_rtc/src/main/java/com/telnyx/webrtc/sdk/verto/receive/SocketObserver.kt index 975229d6..4a812686 100644 --- a/telnyx_rtc/src/main/java/com/telnyx/webrtc/sdk/verto/receive/SocketObserver.kt +++ b/telnyx_rtc/src/main/java/com/telnyx/webrtc/sdk/verto/receive/SocketObserver.kt @@ -13,6 +13,7 @@ abstract class SocketObserver : Observer> { abstract fun onMessageReceived(data: T?) abstract fun onLoading() abstract fun onError(message: String?) + abstract fun onSocketDisconnect() override fun onChanged(t: SocketResponse?) { if (t == null) { @@ -23,6 +24,7 @@ abstract class SocketObserver : Observer> { SocketStatus.MESSAGERECEIVED -> onMessageReceived(t.data) SocketStatus.LOADING -> onLoading() SocketStatus.ERROR -> onError(t.errorMessage) + SocketStatus.DISCONNECT -> onSocketDisconnect() } } } diff --git a/telnyx_rtc/src/main/java/com/telnyx/webrtc/sdk/verto/receive/SocketResponse.kt b/telnyx_rtc/src/main/java/com/telnyx/webrtc/sdk/verto/receive/SocketResponse.kt index 17a6bae0..a90d38b7 100644 --- a/telnyx_rtc/src/main/java/com/telnyx/webrtc/sdk/verto/receive/SocketResponse.kt +++ b/telnyx_rtc/src/main/java/com/telnyx/webrtc/sdk/verto/receive/SocketResponse.kt @@ -27,6 +27,9 @@ data class SocketResponse(val status: SocketStatus, val data: T?, val err fun error(msg: String): SocketResponse { return SocketResponse(SocketStatus.ERROR, null, msg) } + fun disconnect(): SocketResponse { + return SocketResponse(SocketStatus.DISCONNECT, null, null) + } fun loading(): SocketResponse { return SocketResponse( diff --git a/telnyx_rtc/src/test/java/com/telnyx/webrtc/sdk/TelnyxClientTest.kt b/telnyx_rtc/src/test/java/com/telnyx/webrtc/sdk/TelnyxClientTest.kt index be5cf5dd..3dc70a16 100644 --- a/telnyx_rtc/src/test/java/com/telnyx/webrtc/sdk/TelnyxClientTest.kt +++ b/telnyx_rtc/src/test/java/com/telnyx/webrtc/sdk/TelnyxClientTest.kt @@ -148,7 +148,7 @@ class TelnyxClientTest : BaseTest() { ) ) - client.disconnect() + client.onDisconnect() assertEquals(client.isNetworkCallbackRegistered, false) assertEquals(client.socket.isConnected, false) assertEquals(client.socket.isLoggedIn, false) 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 3f1dc447..f4ea035b 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 @@ -152,7 +152,7 @@ class TxSocketTest : BaseTest() { // Sleep to give time to connect Thread.sleep(1000) - client.disconnect() + client.onDisconnect() Thread.sleep(1000) verify(client.socket, atLeastOnce()).destroy() }