@@ -19,22 +19,13 @@ import android.util.Log
1919import android.view.*
2020import androidx.activity.result.contract.ActivityResultContracts
2121import androidx.appcompat.view.menu.MenuBuilder
22+ import androidx.appcompat.widget.AppCompatButton
2223import androidx.core.content.ContextCompat
2324import androidx.localbroadcastmanager.content.LocalBroadcastManager
2425import androidx.recyclerview.widget.ItemTouchHelper
2526import androidx.recyclerview.widget.LinearLayoutManager
2627import androidx.recyclerview.widget.RecyclerView
27- import com.mirrorflysdk.flycall.webrtc.CallType
28- import com.mirrorflysdk.flycall.webrtc.api.CallManager
29- import com.mirrorflysdk.flycall.webrtc.api.CallManager.isOnTelephonyCall
30- import com.mirrorflysdk.flycall.call.utils.CallConstants
31- import com.mirrorflysdk.flycommons.models.MessageType
32- import com.mirrorflysdk.flycommons.*
33- import com.mirrorflysdk.flycommons.LogMessage
34- import com.mirrorflysdk.xmpp.chat.utils.LibConstants
3528import com.contusfly.*
36- import com.contusfly.R
37- import com.contusfly.BuildConfig
3829import com.contusfly.activities.parent.ChatParent
3930import com.contusfly.adapters.ChatAdapter
4031import com.contusfly.adapters.GroupTagAdapter
@@ -46,7 +37,6 @@ import com.contusfly.chat.InviteContactUtils
4637import com.contusfly.chat.RealPathUtil
4738import com.contusfly.chat.ReplyHashMap
4839import com.contusfly.chat.reply.MessageSwipeController
49- import com.contusfly.checkInternetAndExecute
5040import com.contusfly.constants.MobileApplication
5141import com.contusfly.databinding.ActivityChatBinding
5242import com.contusfly.fragments.ScheduleBottomSheetFragment
@@ -60,19 +50,27 @@ import com.contusfly.models.MeetMessageParams
6050import com.contusfly.models.MessageObject
6151import com.contusfly.models.PrivateChatAuthenticationModel
6252import com.contusfly.notification.AppNotificationManager
63- import com.contusfly.returnEmptyIfNull
6453import com.contusfly.utils.*
6554import com.contusfly.utils.Constants
6655import com.contusfly.utils.SharedPreferenceManager
6756import com.contusfly.views.*
57+ import com.google.android.material.bottomsheet.BottomSheetDialog
58+ import com.google.firebase.analytics.FirebaseAnalytics
59+ import com.jakewharton.rxbinding3.recyclerview.scrollEvents
6860import com.mirrorflysdk.api.*
61+ import com.mirrorflysdk.api.contacts.ProfileDetails
6962import com.mirrorflysdk.api.models.ChatMessage
63+ import com.mirrorflysdk.flycall.call.utils.CallConstants
64+ import com.mirrorflysdk.flycall.webrtc.CallType
65+ import com.mirrorflysdk.flycall.webrtc.api.CallManager
66+ import com.mirrorflysdk.flycall.webrtc.api.CallManager.isOnTelephonyCall
67+ import com.mirrorflysdk.flycommons.*
68+ import com.mirrorflysdk.flycommons.LogMessage
69+ import com.mirrorflysdk.flycommons.models.CallMetaData
70+ import com.mirrorflysdk.flycommons.models.MessageType
7071import com.mirrorflysdk.utils.ConstantActions
7172import com.mirrorflysdk.views.CustomToast
72- import com.google.firebase.analytics.FirebaseAnalytics
73- import com.jakewharton.rxbinding3.recyclerview.scrollEvents
74- import com.mirrorflysdk.api.contacts.ProfileDetails
75-
73+ import com.mirrorflysdk.xmpp.chat.utils.LibConstants
7674import dagger.android.AndroidInjection
7775import io.github.rockerhieu.emojicon.EmojiconGridFragment
7876import io.github.rockerhieu.emojicon.EmojiconsFragment
@@ -132,6 +130,8 @@ class ChatActivity : ChatParent(), ActionMode.Callback, View.OnTouchListener, Em
132130 private var mentionFilterKey: String = emptyString()
133131 private lateinit var gestureDetector: GestureDetector
134132
133+ private var callMetaDataList: List <CallMetaData > = emptyList()
134+
135135 private val contactSavePermissionLauncher = registerForActivityResult(
136136 ActivityResultContracts .RequestMultiplePermissions ()) { permissions ->
137137 val contactPermissionGranted = permissions[Manifest .permission.READ_CONTACTS ] ? : ChatUtils .checkMediaPermission(this , Manifest .permission.READ_CONTACTS )
@@ -164,18 +164,92 @@ class ChatActivity : ChatParent(), ActionMode.Callback, View.OnTouchListener, Em
164164 private fun launchAudioCall (){
165165 if (CallManager .isNotificationPermissionsGranted()){
166166 CallPermissionUtils (
167- this ,
168- profileDetails.isBlocked,
169- profileDetails.isAdminBlocked,
170- arrayListOf (profileDetails.jid),
171- " " ,
172- false
167+ this ,
168+ profileDetails.isBlocked,
169+ profileDetails.isAdminBlocked,
170+ arrayListOf (profileDetails.jid),
171+ " " ,
172+ false ,
173+ emptyArray()
173174 ).audioCall()
174175 } else {
175176 notificationPermissionChecking(true )
176177 }
177178 }
178179
180+ private fun makeCallWithCallPermissionUtils (isAudioCall : Boolean , callMetaDataArray : Array <CallMetaData >? = emptyArray<CallMetaData >()){
181+ LogMessage .d(TAG ," #callflow makeCallWithCallPermissionUtils isAudioCall:$isAudioCall callMetaDataList:${callMetaDataArray} " )
182+ if (isAudioCall){
183+ CallPermissionUtils (
184+ this ,
185+ profileDetails.isBlocked,
186+ profileDetails.isAdminBlocked,
187+ arrayListOf (profileDetails.jid),
188+ " " ,
189+ false ,
190+ callMetaDataArray
191+ ).audioCall()
192+ }else {
193+ CallPermissionUtils (
194+ this ,
195+ profileDetails.isBlocked,
196+ profileDetails.isAdminBlocked,
197+ arrayListOf (profileDetails.jid),
198+ " " ,
199+ false ,
200+ callMetaDataArray
201+ ).videoCall()
202+ }
203+
204+ }
205+
206+ @SuppressWarnings(" kotlin:1144" )
207+ private fun checkAndCreateAnonymousCall (isAudioCall : Boolean ){
208+ LogMessage .d(TAG ," #callflow checkAndCreateAnonymousCall" )
209+ val callDialog = BottomSheetDialog (this )
210+ // on below line we are inflating a layout file which we have created.
211+ val callDialogView = layoutInflater.inflate(R .layout.layout_anonymous_call, null )
212+ val callOption = callDialogView.findViewById<AppCompatButton >(R .id.call_option)
213+ val callOptionAnonymous = callDialogView.findViewById<AppCompatButton >(R .id.call_option_anonymous)
214+
215+ val callMetaData = CallMetaData (" isAnonymous" , 1 .toString())
216+ val callMetaData1 = CallMetaData (" AnonymousUsername" ," VIP User" )
217+ val callMetaDataList: Array <CallMetaData > = arrayOf(callMetaData,callMetaData1)
218+ if (isAudioCall){
219+ callOption.text = getString(R .string.audio_call)
220+ callOptionAnonymous.text = getString(R .string.anonymous_audio_call)
221+ callOption.setOnClickListener {
222+ LogMessage .d(TAG ," #callflow checkAndCreateAnonymousCall audioCall " )
223+ makeCallWithCallPermissionUtils(true )
224+ callDialog.dismiss()
225+ }
226+ callOptionAnonymous.setOnClickListener {
227+ LogMessage .d(TAG ," #callflow checkAndCreateAnonymousCall audioCall callMetaDataList $callMetaDataList " )
228+ makeCallWithCallPermissionUtils(true ,callMetaDataList)
229+ callDialog.dismiss()
230+ }
231+ }else {
232+ callOption.text = getString(R .string.video_call)
233+ callOptionAnonymous.text = getString(R .string.anonymous_video_call)
234+
235+ callOption.setOnClickListener {
236+ LogMessage .d(TAG ," #callflow checkAndCreateAnonymousCall videoCall " )
237+ makeCallWithCallPermissionUtils(isAudioCall = false )
238+ callDialog.dismiss()
239+ }
240+ callOptionAnonymous.setOnClickListener {
241+ LogMessage .d(TAG ," #callflow checkAndCreateAnonymousCall videoCall callMetaDataList $callMetaDataList " )
242+ makeCallWithCallPermissionUtils(isAudioCall = false ,callMetaDataList)
243+ callDialog.dismiss()
244+ }
245+ }
246+
247+ callDialog.setCancelable(false )
248+ callDialog.setContentView(callDialogView)
249+ callDialog.show()
250+
251+ }
252+
179253 private fun notificationPermissionChecking (isCall : Boolean ){
180254 if (isCall){
181255 MediaPermissions .requestNotificationPermission(
@@ -222,12 +296,13 @@ class ChatActivity : ChatParent(), ActionMode.Callback, View.OnTouchListener, Em
222296 private fun launchVideoCall (){
223297 if (CallManager .isNotificationPermissionsGranted()){
224298 CallPermissionUtils (
225- this ,
226- profileDetails.isBlocked,
227- profileDetails.isAdminBlocked,
228- arrayListOf (profileDetails.jid),
229- " " ,
230- false
299+ this ,
300+ profileDetails.isBlocked,
301+ profileDetails.isAdminBlocked,
302+ arrayListOf (profileDetails.jid),
303+ " " ,
304+ false ,
305+ emptyArray()
231306 ).videoCall()
232307 } else {
233308 notificationPermissionChecking(true )
0 commit comments