Skip to content

Commit 083da6c

Browse files
Merge pull request #26 from MirrorFly/release/v7.12.0
Release version 7.12.0
2 parents 7916d31 + 09ec405 commit 083da6c

15 files changed

+102
-39
lines changed

app/build.gradle

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ android {
3535
targetSdkVersion 34
3636
compileSdk(34)
3737
versionCode 16
38-
versionName "7.11.7"
38+
versionName "7.12.0"
3939
multiDexEnabled true
4040
buildConfigField "java.util.Date", "BUILD_TIME", "new java.util.Date(" + System.currentTimeMillis() + "L)"
4141
vectorDrawables.useSupportLibrary = true
@@ -45,7 +45,6 @@ android {
4545

4646
buildTypes {
4747
debug {
48-
initWith debug
4948
buildConfigField 'Boolean', 'IS_QA_BUILD', 'true'
5049
buildConfigField 'String', 'LICENSE', '"Please enter your License key"'
5150
buildConfigField 'String', 'WEB_CHAT_LOGIN', '"https://webchat-preprod-sandbox.mirrorfly.com/"'
@@ -86,6 +85,7 @@ android {
8685
javaMaxHeapSize "4g"
8786
}
8887

88+
8989
buildTypes.each {
9090
it.buildConfigField 'String', 'GOOGLE_TRANSLATE_KEY', GOOGLE_TRANSLATE_KEY
9191
it.buildConfigField 'Boolean', 'HIPAA_COMPLIANCE_ENABLED', HIPAA_COMPLIANCE_ENABLED
@@ -111,7 +111,7 @@ dependencies {
111111
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
112112
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
113113
testImplementation 'junit:junit:4.13.2'
114-
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
114+
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
115115
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
116116
implementation "androidx.core:core-ktx:1.3.2"
117117
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
@@ -202,7 +202,7 @@ dependencies {
202202
implementation project(':sdk:googletranslation')
203203
implementation project(path: ':call')
204204

205-
implementation 'com.mirrorfly.sdk:mirrorflysdk:7.11.7'
205+
implementation 'com.mirrorfly.sdk:mirrorflysdk:7.12.0'
206206

207207
//Socket - versions.gradle
208208
implementation 'com.github.nkzawa:socket.io-client:0.6.0'

app/src/main/java/com/contusfly/MyFirebaseMessagingService.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ class MyFirebaseMessagingService : FirebaseMessagingService() {
3333
val notificationData: Map<String, String> = remoteMessage.data
3434
if (notificationData.isNotEmpty()) {
3535
LogMessage.d(TAG, "RemoteMessage:$notificationData")
36-
CallLogger().callLog(TAG,"RemoteMessage notification:$notificationData")
36+
CallLogger.callLog(TAG,"RemoteMessage notification:$notificationData")
3737
firebaseUtils.handleReceivedMessage(this, notificationData)
3838
}
3939
}

app/src/main/java/com/contusfly/activities/BaseActivity.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ import com.mirrorflysdk.api.contacts.ContactManager
4343
import com.mirrorflysdk.api.contacts.ProfileDetails
4444
import com.mirrorflysdk.api.models.ChatMessage
4545
import com.mirrorflysdk.flycommons.Result
46+
import com.mirrorflysdk.flycommons.exception.FlyException
4647
import com.mirrorflysdk.utils.Utils
4748
import kotlinx.coroutines.CoroutineExceptionHandler
4849
import kotlinx.coroutines.GlobalScope
@@ -82,7 +83,7 @@ open class BaseActivity : FlyBaseActivity() {
8283
AppNotificationManager.cancelNotifications(this)
8384
if (checkIsUserInCall()) {
8485
CallManager.disconnectCall(object : CallActionListener {
85-
override fun onResponse(isSuccess: Boolean, message: String) {
86+
override fun onResponse(isSuccess: Boolean, flyException: FlyException?) {
8687
startShowStopperActivity()
8788
}
8889
})
@@ -346,7 +347,7 @@ open class BaseActivity : FlyBaseActivity() {
346347
otherUserHandler?.postDelayed({
347348
if (CallManager.getGroupID() == jid && adminBlockedOtherUserStatus && checkIsUserInCall()) {
348349
CallManager.disconnectCall(object : CallActionListener {
349-
override fun onResponse(isSuccess: Boolean, message: String) {
350+
override fun onResponse(isSuccess: Boolean, flyException: FlyException?) {
350351
startDashboardActivity()
351352
}
352353
})

app/src/main/java/com/contusfly/call/CallPermissionUtils.kt

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ import com.contusfly.views.DoProgressDialog
3434
import com.mirrorflysdk.AppUtils
3535
import com.mirrorflysdk.api.ChatManager
3636
import com.mirrorflysdk.api.FlyCore.unblockUser
37+
import com.mirrorflysdk.flycommons.exception.FlyException
3738
import com.mirrorflysdk.views.CustomToast
3839
import java.util.*
3940

@@ -212,8 +213,8 @@ class CallPermissionUtils(activity: Activity, isBlocked: Boolean, isAdminBlocked
212213
CustomAlertDialog().showFeatureRestrictionAlert(activity)
213214
} else {
214215
makeVoiceCall(jidList[0], object : CallActionListener {
215-
override fun onResponse(isSuccess: Boolean, message: String) {
216-
LogMessage.i(TAG, "$CALL_UI makeVoiceCall: $message")
216+
override fun onResponse(isSuccess: Boolean, flyException: FlyException?) {
217+
LogMessage.i(TAG, "$CALL_UI makeVoiceCall: ${flyException?.message}")
217218
}
218219
})
219220
}
@@ -227,8 +228,8 @@ class CallPermissionUtils(activity: Activity, isBlocked: Boolean, isAdminBlocked
227228
CustomAlertDialog().showFeatureRestrictionAlert(activity)
228229
} else {
229230
CallManager.makeGroupVoiceCall(jidList, groupId, object : CallActionListener {
230-
override fun onResponse(isSuccess: Boolean, message: String) {
231-
LogMessage.i(TAG, "$CALL_UI makeVoiceCall: $message")
231+
override fun onResponse(isSuccess: Boolean, flyException: FlyException?) {
232+
LogMessage.i(TAG, "$CALL_UI makeVoiceCall: ${flyException?.message}")
232233
}
233234
})
234235
closeScreen()
@@ -266,8 +267,8 @@ class CallPermissionUtils(activity: Activity, isBlocked: Boolean, isAdminBlocked
266267
CustomAlertDialog().showFeatureRestrictionAlert(activity)
267268
} else {
268269
makeVideoCall(jidList[0], object : CallActionListener {
269-
override fun onResponse(isSuccess: Boolean, message: String) {
270-
LogMessage.i(TAG, "$CALL_UI makeVideoCall: $message")
270+
override fun onResponse(isSuccess: Boolean, flyException: FlyException?) {
271+
LogMessage.i(TAG, "$CALL_UI makeVideoCall: ${flyException?.message}")
271272
}
272273
})
273274
}
@@ -279,8 +280,8 @@ class CallPermissionUtils(activity: Activity, isBlocked: Boolean, isAdminBlocked
279280
CustomAlertDialog().showFeatureRestrictionAlert(activity)
280281
} else {
281282
CallManager.makeGroupVideoCall(jidList, groupId, object : CallActionListener {
282-
override fun onResponse(isSuccess: Boolean, message: String) {
283-
LogMessage.i(TAG, "$CALL_UI makeVideoCall: $message")
283+
override fun onResponse(isSuccess: Boolean, flyException: FlyException?) {
284+
LogMessage.i(TAG, "$CALL_UI makeVideoCall: ${flyException?.message}")
284285
}
285286
})
286287
closeScreen()

app/src/main/java/com/contusfly/call/groupcall/AddParticipantFragment.kt

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ import com.mirrorflysdk.activities.FlyBaseActivity
3636
import com.mirrorflysdk.api.ChatManager
3737
import com.mirrorflysdk.api.contacts.ProfileDetails
3838
import com.mirrorflysdk.flycall.call.utils.GroupCallUtils
39+
import com.mirrorflysdk.flycall.webrtc.api.CallActionListener
3940
import com.mirrorflysdk.views.CustomToast
4041
import dagger.android.support.AndroidSupportInjection
4142
import kotlinx.coroutines.CoroutineScope
@@ -167,6 +168,11 @@ class AddParticipantFragment : Fragment(), CoroutineScope{
167168
}
168169
}
169170

171+
/**
172+
* call action listener to listen for invite user list call back
173+
*/
174+
private var callActionListener: CallActionListener? = null
175+
170176
override fun onCreate(savedInstanceState: Bundle?) {
171177
super.onCreate(savedInstanceState)
172178
setHasOptionsMenu(true)
@@ -402,7 +408,7 @@ class AddParticipantFragment : Fragment(), CoroutineScope{
402408
CustomAlertDialog().showFeatureRestrictionAlert(requireContext())
403409
} else {
404410
addParticipantsLayout.isEnabled = false
405-
CallManager.inviteUsersToOngoingCall(selectedList)
411+
CallManager.inviteUsersToOngoingCall(selectedList, inputCallActionListener = callActionListener)
406412
CallUtils.setIsAddUsersToTheCall(false)
407413
requireActivity().supportFragmentManager.popBackStackImmediate()
408414
}
@@ -538,13 +544,15 @@ class AddParticipantFragment : Fragment(), CoroutineScope{
538544
fun newInstance(
539545
groupId: String?,
540546
isOneToOneCall: Boolean,
541-
callUsersList: ArrayList<String>?
547+
callUsersList: ArrayList<String>?,
548+
callActionListener: CallActionListener?
542549
) = AddParticipantFragment().apply {
543550
arguments = Bundle().apply {
544551
putString(Constants.GROUP_ID, groupId)
545552
putBoolean(ADD_USERS_TO_ONE_TO_ONE_CALL, isOneToOneCall)
546553
putStringArrayList(CONNECTED_USER_LIST, callUsersList)
547554
}
555+
this.callActionListener = callActionListener
548556
}
549557
}
550558

app/src/main/java/com/contusfly/call/groupcall/GroupCallActivity.kt

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ import com.mirrorflysdk.flycall.webrtc.api.CallEventsListener
4141
import com.mirrorflysdk.flycall.webrtc.api.CallManager
4242
import com.mirrorflysdk.flycommons.Features
4343
import com.mirrorflysdk.flycommons.LogMessage
44+
import com.mirrorflysdk.flycommons.exception.FlyException
4445
import com.mirrorflysdk.views.CustomToast
4546
import kotlinx.android.synthetic.main.custom_toast.*
4647
import java.util.concurrent.atomic.AtomicBoolean
@@ -221,6 +222,7 @@ class GroupCallActivity : BaseActivity(), View.OnClickListener, ActivityOnClickL
221222
window.setFormat(PixelFormat.TRANSLUCENT)
222223
//register for call events
223224
CallManager.setCallEventsListener(customCallEventsListener)
225+
CallManager.setupCallActionListener(customCallEventsListener)
224226

225227
initClickListeners()
226228
setUpCallDataAndUI()
@@ -503,9 +505,13 @@ class GroupCallActivity : BaseActivity(), View.OnClickListener, ActivityOnClickL
503505
LogMessage.d(TAG, "$CALL_UI answer()")
504506
if (isAnswerCalled.compareAndSet(false, true)) {
505507
CallManager.answerCall(object : CallActionListener {
506-
override fun onResponse(isSuccess: Boolean, message: String) {
507-
LogMessage.d(TAG, "$CALL_UI answer() success: $isSuccess")
508-
setUpCallUI()
508+
override fun onResponse(isSuccess: Boolean, flyException: FlyException?) {
509+
val errorMessage = flyException?.message ?: ""
510+
LogMessage.d(TAG, "$CALL_UI answer() success: $isSuccess message:${errorMessage}")
511+
if(isSuccess)
512+
setUpCallUI()
513+
else
514+
Toast.makeText(this@GroupCallActivity,errorMessage,Toast.LENGTH_SHORT)
509515
}
510516
})
511517
}
@@ -529,7 +535,7 @@ class GroupCallActivity : BaseActivity(), View.OnClickListener, ActivityOnClickL
529535
) {
530536
LogMessage.d(
531537
TAG,
532-
"$CALL_UI $JOIN_CALL disconnectCall IN UI isDisconnectCalled: $isDisconnectCalled isNotFromRetry:$isNotFromRetry"
538+
"$CALL_UI $JOIN_CALL #disconnect ui start disconnectCall IN UI isDisconnectCalled: $isDisconnectCalled isNotFromRetry:$isNotFromRetry"
533539
)
534540
if (isDisconnectCalled.compareAndSet(false, true)) {
535541
// The below code execution is guaranteed to be called only once
@@ -542,6 +548,10 @@ class GroupCallActivity : BaseActivity(), View.OnClickListener, ActivityOnClickL
542548
else
543549
finish()
544550
}
551+
LogMessage.d(
552+
TAG,
553+
"$CALL_UI $JOIN_CALL #disconnect ui done!!"
554+
)
545555
}
546556

547557
override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean {
@@ -629,7 +639,8 @@ class GroupCallActivity : BaseActivity(), View.OnClickListener, ActivityOnClickL
629639
participantListFragment = ParticipantsListFragment.newInstance(
630640
groupId,
631641
groupId.isNullOrEmpty(),
632-
CallManager.getCallUsersList()
642+
CallManager.getCallUsersList(),
643+
customCallEventsListener
633644
)
634645
val fragmentTransaction: FragmentTransaction =
635646
supportFragmentManager.beginTransaction()
@@ -666,6 +677,7 @@ class GroupCallActivity : BaseActivity(), View.OnClickListener, ActivityOnClickL
666677
public override fun onDestroy() {
667678
LogMessage.d(TAG, "$CALL_UI onDestroy called()")
668679
CallManager.removeCallEventsListener(customCallEventsListener)
680+
CallManager.removeCallActionListener(customCallEventsListener)
669681
CallUtils.setVideoViewInitialization(false)
670682
super.onDestroy()
671683
}
@@ -738,7 +750,7 @@ class GroupCallActivity : BaseActivity(), View.OnClickListener, ActivityOnClickL
738750
}
739751
}
740752

741-
private inner class CustomCallEventsListener : CallEventsListener {
753+
private inner class CustomCallEventsListener : CallEventsListener,CallActionListener{
742754
override fun onCallStatusUpdated(callStatus: String, userJid: String) {
743755
handleCallStatusMessages(callStatus, userJid)
744756
}
@@ -868,7 +880,7 @@ class GroupCallActivity : BaseActivity(), View.OnClickListener, ActivityOnClickL
868880
LogMessage.d(TAG, "$CALL_UI handleToastRemoteOtherBusy userJid: $userJid ")
869881
val remoteBusyUserName: String = CallManager.getUserName(userJid)
870882
if (remoteBusyUserName.equals(
871-
com.contusfly.utils.Constants.EMPTY_STRING,
883+
Constants.EMPTY_STRING,
872884
false
873885
)
874886
)
@@ -880,7 +892,7 @@ class GroupCallActivity : BaseActivity(), View.OnClickListener, ActivityOnClickL
880892
private fun handleToastRemoteEngaged(userJid: String) {
881893
val remoteEngageUserName: String = CallManager.getUserName(userJid)
882894
if (remoteEngageUserName.equals(
883-
com.contusfly.utils.Constants.EMPTY_STRING,
895+
Constants.EMPTY_STRING,
884896
false
885897
)
886898
)
@@ -946,6 +958,15 @@ class GroupCallActivity : BaseActivity(), View.OnClickListener, ActivityOnClickL
946958
else -> handleCallVideoMessages(callAction, userJid)
947959
}
948960
}
961+
962+
override fun onResponse(isSuccess: Boolean, flyException: FlyException?) {
963+
LogMessage.d(TAG, "$CALL_UI onResponse")
964+
val errorMessage = flyException?.message ?: ""
965+
runOnUiThread {
966+
if(!isSuccess)
967+
Toast.makeText(this@GroupCallActivity, errorMessage, Toast.LENGTH_SHORT).show()
968+
}
969+
}
949970
}
950971

951972

app/src/main/java/com/contusfly/call/groupcall/OnGoingCallPreviewActivity.kt

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ import com.mirrorflysdk.flycall.webrtc.api.CallManager
4343
import com.mirrorflysdk.flycall.webrtc.api.JoinCallActionListener
4444
import com.mirrorflysdk.flycommons.Error
4545
import com.mirrorflysdk.flycommons.LogMessage
46+
import com.mirrorflysdk.flycommons.exception.FlyException
4647
import com.mirrorflysdk.utils.Utils
4748
import com.mirrorflysdk.views.CustomToast
4849
import org.webrtc.RendererCommon
@@ -144,6 +145,7 @@ class OnGoingCallPreviewActivity : BaseActivity(), View.OnClickListener,
144145
finish()
145146
return
146147
}
148+
LogMessage.d(TAG, "#OnGngCall onCreate")
147149
isFromOnCreate = true
148150
onGoingCallPreviewScreenBinding =
149151
ActivityOnGoingCallPreviewScreenBinding.inflate(layoutInflater)
@@ -192,6 +194,7 @@ class OnGoingCallPreviewActivity : BaseActivity(), View.OnClickListener,
192194
}
193195

194196
private fun askCallSwitchPopup(url: String) {
197+
LogMessage.d(TAG, "#OnGngCall askCallSwitchPopup")
195198
commonAlertDialog!!.showCallSwitchAlertDialog(
196199
url,
197200
this.getString(R.string.action_ok),
@@ -201,6 +204,7 @@ class OnGoingCallPreviewActivity : BaseActivity(), View.OnClickListener,
201204
}
202205

203206
private fun subscribeCallEvents() {
207+
LogMessage.d(TAG, "#OnGngCall $JOIN_CALL subscribeCallEvents")
204208
CallManager.subscribeCallEvents(callLink, userName, object : JoinCallActionListener {
205209
override fun onFailure(error: Error) {
206210
LogMessage.d(TAG, "#OnGngCall $JOIN_CALL Subscribe call failure")
@@ -224,6 +228,7 @@ class OnGoingCallPreviewActivity : BaseActivity(), View.OnClickListener,
224228
observingCallEvents()
225229
setLocalViewProfilePic()
226230
observeNetworkListener()
231+
subscribeCallEvents()
227232
}
228233

229234
private fun handleOnFailure(error: Error) {
@@ -250,6 +255,19 @@ class OnGoingCallPreviewActivity : BaseActivity(), View.OnClickListener,
250255
isInvalidLink = false
251256
}
252257

258+
Error.SIGNAL_SERVER_CONNECTION_NOT_AVAILABLE -> {
259+
callEnded = getString(R.string.call_ended_text)
260+
callEndedMessage = Error.SIGNAL_SERVER_CONNECTION_NOT_AVAILABLE.description
261+
isInvalidLink = false
262+
}
263+
264+
Error.JANUS_CONNECTION_ERROR_CODE -> {
265+
callEnded = getString(R.string.call_ended_text)
266+
callEndedMessage = Error.JANUS_CONNECTION_ERROR_CODE.description
267+
isInvalidLink = false
268+
}
269+
270+
253271
Error.MAX_USERS_REACHED -> {
254272
showToast(
255273
String.format(
@@ -403,6 +421,7 @@ class OnGoingCallPreviewActivity : BaseActivity(), View.OnClickListener,
403421
}
404422

405423
private fun observingCallEvents() {
424+
LogMessage.d(TAG, "#OnGngCall $JOIN_CALL observingCallEvents setJoinCallEventsListener")
406425
CallManager.setJoinCallEventsListener(object : JoinCallListener {
407426
override fun onError(error: Error) {
408427
LogMessage.d(TAG, "#OnGngCall $JOIN_CALL setJoinCallEventsListener onError ")
@@ -529,6 +548,7 @@ class OnGoingCallPreviewActivity : BaseActivity(), View.OnClickListener,
529548
}
530549

531550
private fun setLocalViewProfilePic() {
551+
LogMessage.d(TAG, "#OnGngCall $JOIN_CALL setLocalViewProfilePic")
532552
val userImgUrl =
533553
Utils.returnEmptyStringIfNull(SharedPreferenceManager.getString(Constants.USER_PROFILE_IMAGE))
534554
if (userImgUrl.isNotEmpty())
@@ -578,6 +598,7 @@ class OnGoingCallPreviewActivity : BaseActivity(), View.OnClickListener,
578598
}
579599

580600
private fun showAlertForTelephonyCall() {
601+
LogMessage.d(TAG, "#OnGngCall showAlertForTelephonyCall")
581602
if (CallManager.isOnTelephonyCall(this)) {
582603
commonAlertDialog!!.showAlertDialog(
583604
this.getString(R.string.msg_telephony_call_alert),
@@ -637,7 +658,7 @@ class OnGoingCallPreviewActivity : BaseActivity(), View.OnClickListener,
637658
val isVideoMuted = !muteVideoImage.isActivated
638659
if (!isVideoMuted) CallManager.startVideoCapture()
639660
CallManager.muteVideo(isVideoMuted, object : CallActionListener {
640-
override fun onResponse(isSuccess: Boolean, message: String) {
661+
override fun onResponse(isSuccess: Boolean, flyException: FlyException?) {
641662
LogMessage.d(TAG, "$CALL_UI $JOIN_CALL muteVideo onResponse()")
642663
if (isVideoMuted) showUserProfilePic()
643664
else {
@@ -696,7 +717,7 @@ class OnGoingCallPreviewActivity : BaseActivity(), View.OnClickListener,
696717
progressDialog!!.showProgress()
697718
//Current call disconnect
698719
CallManager.disconnectCall(object : CallActionListener {
699-
override fun onResponse(isSuccess: Boolean, message: String) {
720+
override fun onResponse(isSuccess: Boolean, flyException: FlyException?) {
700721
joinCallPreviewInitialization()
701722
}
702723
})

0 commit comments

Comments
 (0)