Skip to content

Commit cc0543e

Browse files
Merge pull request #32 from MirrorFly/release/V7.13.2
Release/v7.13.2
2 parents 692900a + 6b1be97 commit cc0543e

File tree

17 files changed

+172
-128
lines changed

17 files changed

+172
-128
lines changed

app/build.gradle

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@ android {
5757
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
5858
}
5959

60-
6160
release {
6261
initWith debug
6362
buildConfigField 'Boolean', 'IS_QA_BUILD', 'true'
@@ -203,7 +202,7 @@ dependencies {
203202
implementation project(':sdk:googletranslation')
204203
implementation project(path: ':call')
205204

206-
implementation 'com.mirrorfly.sdk:mirrorflysdk:7.13.0'
205+
implementation 'com.mirrorfly.sdk:mirrorflysdk:7.13.2'
207206

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

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

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import com.contusfly.utils.FirebaseUtils
44
import com.contusfly.utils.LogMessage
55
import com.google.firebase.messaging.FirebaseMessagingService
66
import com.google.firebase.messaging.RemoteMessage
7+
import com.google.gson.Gson
8+
import com.google.gson.reflect.TypeToken
79
import com.mirrorflysdk.flycall.webrtc.CallLogger
810
import dagger.android.AndroidInjection
911
import javax.inject.Inject
@@ -30,8 +32,22 @@ class MyFirebaseMessagingService : FirebaseMessagingService() {
3032
super.onMessageReceived(remoteMessage)
3133
// Data messages are handled here in onMessageReceived whether the app is in the foreground
3234
// or background. Data messages are the type traditionally used with GCM.
33-
val notificationData: Map<String, String> = remoteMessage.data
35+
var notificationData: Map<String, String> = remoteMessage.data
3436
if (notificationData.isNotEmpty()) {
37+
try {
38+
val messageDataString = notificationData["message"]
39+
if (messageDataString != null) {
40+
notificationData = Gson().fromJson<Map<String, String>>(messageDataString, object : TypeToken<Map<String, Any>>() {}.type)
41+
if(notificationData.containsKey("android")) {
42+
val dataMap = notificationData["data"] as? Map<String, String>
43+
dataMap?.let { data ->
44+
notificationData = data
45+
}
46+
}
47+
}
48+
} catch(e: Exception) {
49+
LogMessage.e("Fcm_parsing_Error",e)
50+
}
3551
LogMessage.d(TAG, "RemoteMessage:$notificationData")
3652
CallLogger.callLog(TAG,"RemoteMessage notification:$notificationData")
3753
firebaseUtils.handleReceivedMessage(this, notificationData)

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

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.contusfly.activities
22

3+
import android.app.Activity
34
import android.os.Bundle
45
import android.os.Handler
56
import android.os.Looper
@@ -345,8 +346,8 @@ class ArchivedChatsActivity : BaseActivity(), ActionMode.Callback,
345346
val bundle = Bundle()
346347
bundle.putInt(Constants.NOTIFY_SELECTION, 4)
347348
val selectedChats = viewModel.chatList.value!![position]
348-
if (viewModel.selectedChats.contains(selectedChats)) {
349-
viewModel.selectedChats.remove(selectedChats)
349+
if (viewModel.selectedChats.any { it.jid == selectedChats.jid }) {
350+
viewModel.selectedChats.remove(viewModel.selectedChats.first { it.jid == selectedChats.jid })
350351
} else if (!selectedChats.isGroup && !viewModel.selectedChats[0].isGroup
351352
|| viewModel.selectedChats.isNotEmpty())
352353
viewModel.selectedChats.add(selectedChats)
@@ -621,7 +622,10 @@ class ArchivedChatsActivity : BaseActivity(), ActionMode.Callback,
621622
if (isSuccess) selectedJids.add(recent.jid)
622623
else failedCount++
623624
isAdapterNeedSync = (selectedJids.size > 0 && selectedCount == (selectedJids.size + failedCount))
624-
if (isAdapterNeedSync) updateArchiveChatsData(selectedJids, failedCount)
625+
if (isAdapterNeedSync){
626+
updateArchiveChatsData(selectedJids, failedCount)
627+
setResult(Activity.RESULT_OK)
628+
}
625629
})
626630
}
627631
}

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

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ import android.view.Menu
1111
import android.view.MenuItem
1212
import android.view.View
1313
import android.widget.TextView
14+
import androidx.activity.result.ActivityResultLauncher
15+
import androidx.activity.result.contract.ActivityResultContracts
1416
import androidx.appcompat.widget.SearchView
1517
import androidx.core.content.ContextCompat
1618
import androidx.fragment.app.Fragment
@@ -203,10 +205,7 @@ class DashboardActivity : DashboardParent(), View.OnClickListener, ActionMode.Ca
203205
1 -> {
204206
swipeRefreshLayout.isEnabled = false
205207
dashboardBinding.newChatFab.visibility = View.GONE
206-
clearMissedCallNotificationDetails()
207-
//mark missed calls as read
208-
CallLogManager.markAllUnreadMissedCallsAsRead()
209-
validateMissedCallsCount()
208+
clearMissedCall()
210209
}
211210
}
212211
setUpTabColors(position)
@@ -215,6 +214,14 @@ class DashboardActivity : DashboardParent(), View.OnClickListener, ActionMode.Ca
215214
})
216215
}
217216

217+
private fun clearMissedCall() {
218+
clearMissedCallNotificationDetails()
219+
//mark missed calls as read
220+
CallLogManager.markAllUnreadMissedCallsAsRead()
221+
validateMissedCallsCount()
222+
223+
}
224+
218225
@SuppressLint("InflateParams")
219226
private fun setUpTabLayout() {
220227
tabLayout.show()
@@ -649,8 +656,29 @@ class DashboardActivity : DashboardParent(), View.OnClickListener, ActionMode.Ca
649656
callLogMenuShowHide()
650657
}
651658

659+
viewModel.launchArchiveactivity.observe(this) {
660+
661+
launchArchiveChat()
662+
663+
}
664+
652665
}
653666

667+
private fun launchArchiveChat() {
668+
669+
val intent = Intent(this, ArchivedChatsActivity::class.java)
670+
671+
archieveActivityResultLauncher.launch(intent)
672+
673+
}
674+
675+
private var archieveActivityResultLauncher: ActivityResultLauncher<Intent> =
676+
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result->
677+
if (result.resultCode == RESULT_OK) {
678+
viewModel.isNeedFetchNextPage = true
679+
}
680+
}
681+
654682
/**
655683
* Update the recent chat unread users count
656684
*/

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

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -533,7 +533,13 @@ class OtpActivity : BaseActivity(), IOtpView, View.OnClickListener,
533533
progress.setMessage(resources.getString(R.string.please_wait_label))
534534
progress.show()
535535
setOtpTextViewEmpty(getOtpEditText())
536-
otpViewPresenter.validateAndSendOtp()
536+
if(AppConstants.OTP_ENABLE) {
537+
otpViewPresenter.validateAndSendOtp()
538+
} else {
539+
val mobileEditText = otpBinding.edtMobileNo
540+
setMobileNumber(mobileEditText.text.toString())
541+
registerAccount()
542+
}
537543
val imm: InputMethodManager =
538544
getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
539545
imm.hideSoftInputFromWindow(currentFocus?.windowToken, 0)

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

Lines changed: 60 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,23 +9,26 @@ import android.net.Uri
99
import android.os.Build
1010
import androidx.core.app.NotificationCompat
1111
import androidx.core.content.ContextCompat
12-
import com.mirrorflysdk.flycommons.LogMessage
13-
import com.mirrorflysdk.flycall.call.utils.CallConstants
14-
import com.mirrorflysdk.flycall.webrtc.api.CallLogManager
15-
import com.mirrorflysdk.flycommons.PendingIntentHelper
12+
import com.contusfly.BuildConfig
1613
import com.contusfly.R
1714
import com.contusfly.TAG
1815
import com.contusfly.activities.DashboardActivity
1916
import com.contusfly.call.groupcall.utils.CallUtils
17+
import com.contusfly.constants.MobileApplication
2018
import com.contusfly.emptyString
2119
import com.contusfly.getDisplayName
2220
import com.contusfly.notification.NotificationBuilder
2321
import com.contusfly.utils.Constants
2422
import com.contusfly.utils.NotifyRefererUtils
2523
import com.contusfly.utils.ProfileDetailsUtils
2624
import com.contusfly.utils.SharedPreferenceManager
25+
import com.mirrorflysdk.api.ChatManager
2726
import com.mirrorflysdk.api.FlyMessenger
27+
import com.mirrorflysdk.flycall.call.utils.CallConstants
2828
import com.mirrorflysdk.flycall.webrtc.CallType
29+
import com.mirrorflysdk.flycall.webrtc.api.CallLogManager
30+
import com.mirrorflysdk.flycommons.LogMessage
31+
import com.mirrorflysdk.flycommons.PendingIntentHelper
2932
import java.security.SecureRandom
3033

3134
object MissedCallNotificationUtils {
@@ -48,7 +51,7 @@ object MissedCallNotificationUtils {
4851
val bound = 1000
4952
val channelId = randomNumberGenerator.nextInt(bound).toString()
5053
val notificationManager = context
51-
.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
54+
.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
5255

5356
unReadCallCount += 1
5457
unReadCallCount = if (NotificationBuilder.chatNotifications.size == 0) getTotalUnReadCount() else unReadCallCount
@@ -149,7 +152,58 @@ object MissedCallNotificationUtils {
149152
unReadCallCount = 0
150153
}
151154

152-
fun clearMissedCallNotificationDetails(){
155+
fun createMissCallNotification( isOneToOneCall: Boolean, userJid: String, groupId: String?, callType: String,
156+
userList: ArrayList<String>){
157+
try {
158+
LogMessage.d(TAG, "onMissedCall")
159+
missedCallNotificationCount += 1
160+
addMissedCallNotificationUsers(isOneToOneCall, userJid, groupId,callType)
161+
val notificationContent = getMissedCallNotificationContent(isOneToOneCall, userJid, groupId, callType, userList)
162+
if (missedCallNotificationCount > 1) {
163+
createNotification(
164+
MobileApplication.getContext(),
165+
" $missedCallNotificationCount $missedCallNotificationCallType", //Title Missed call Notification
166+
missedCallNotificationUserNames //Message Content Missed call from whom
167+
)
168+
} else {
169+
createNotification(
170+
MobileApplication.getContext(),
171+
notificationContent.first, //Title Missed call Notification
172+
notificationContent.second //Message Content Missed call from whom
173+
)
174+
}
175+
} catch(e: Exception){
176+
LogMessage.e(TAG,e.toString())
177+
}
178+
}
179+
180+
private fun getMissedCallNotificationContent(isOneToOneCall: Boolean, userJid: String, groupId: String?, callType: String,
181+
userList: ArrayList<String>): Pair<String, String> {
182+
var messageContent : String
183+
val missedCallMessage = StringBuilder()
184+
missedCallMessage.append(ChatManager.applicationContext.resources.getString(R.string.you_missed_call))
185+
if (isOneToOneCall && groupId.isNullOrEmpty()) {
186+
if (callType == CallType.AUDIO_CALL) {
187+
missedCallMessage.append("an ")
188+
} else {
189+
missedCallMessage.append("a ")
190+
}
191+
missedCallMessage.append(callType).append(" call")
192+
messageContent = ProfileDetailsUtils.getProfileDetails(userJid)?.getDisplayName()!!
193+
} else {
194+
missedCallMessage.append("a group ").append(callType).append(" call")
195+
messageContent = if (!groupId.isNullOrBlank()) {
196+
ProfileDetailsUtils.getProfileDetails(groupId)?.getDisplayName()!!
197+
} else {
198+
CallUtils.getCallUsersName(userList).toString()
199+
}
200+
}
201+
if (BuildConfig.HIPAA_COMPLIANCE_ENABLED)
202+
messageContent = ChatManager.applicationContext.resources.getString(R.string.new_missed_call)
203+
return Pair(missedCallMessage.toString(), messageContent)
204+
}
205+
206+
fun clearMissedCallNotificationDetails() {
153207
missedCallNotificationCount = 0
154208
missedCallNotificationUserJidList.clear()
155209
missedCallNotificationUserNames = emptyString()
@@ -158,7 +212,6 @@ object MissedCallNotificationUtils {
158212
}
159213

160214
fun addMissedCallNotificationUsers(isOneToOneCall: Boolean, userJid: String, groupId: String?, callType: String) {
161-
missedCallNotificationCount += 1
162215
if (!missedCallTypeList.contains(callType))
163216
missedCallTypeList.add(callType)
164217
if (isOneToOneCall) {

0 commit comments

Comments
 (0)