TP-63765 | Clickstream events for UST end to end funnel (#10818)
This commit is contained in:
@@ -0,0 +1,13 @@
|
||||
/*
|
||||
*
|
||||
* * Copyright © 2024 by Navi Technologies Limited
|
||||
* * All rights reserved. Strictly confidential
|
||||
*
|
||||
*/
|
||||
|
||||
package com.navi.chat.interfaces
|
||||
|
||||
interface ChatTopBackButtonClickListener {
|
||||
|
||||
fun onTopBackButtonClicked(topBackPressed: Boolean)
|
||||
}
|
||||
@@ -21,6 +21,7 @@ import com.navi.chat.databinding.ActivityNaviChatBinding
|
||||
import com.navi.chat.db.utils.getFileName
|
||||
import com.navi.chat.interfaces.AttachmentOptionClickListener
|
||||
import com.navi.chat.interfaces.ChatConversationIdListenerInterface
|
||||
import com.navi.chat.interfaces.ChatTopBackButtonClickListener
|
||||
import com.navi.chat.models.NaviChatSystemLocalData
|
||||
import com.navi.chat.ui.fragments.ChatExitBottomSheet
|
||||
import com.navi.chat.ui.fragments.NaviChatFragment
|
||||
@@ -34,20 +35,28 @@ import com.navi.chat.utils.GALLERY_ITEM
|
||||
import com.navi.chat.utils.NAVI_CHAT_SYSTEM_LOCAL_DATA
|
||||
import com.navi.chat.utils.NaviChatAnalytics
|
||||
import com.navi.chat.utils.NaviChatAnalytics.Companion.CHATSCREEN_BACK_BUTTON_CLICK
|
||||
import com.navi.chat.utils.NaviChatAnalytics.Companion.SESSION_ID
|
||||
import com.navi.chat.utils.SCREEN_NAME
|
||||
import com.navi.chat.utils.URI_LIST
|
||||
import com.navi.chat.viewmodels.AttachmentPickerViewModel
|
||||
import com.navi.chat.viewmodels.NaviChatSharedViewModel
|
||||
import com.navi.common.model.ModuleNameV2
|
||||
import com.navi.common.ui.activity.BaseActivity
|
||||
import com.navi.common.utils.getSessionId
|
||||
|
||||
class NaviChatActivity :
|
||||
BaseActivity(), AttachmentOptionClickListener, ChatConversationIdListenerInterface {
|
||||
BaseActivity(),
|
||||
AttachmentOptionClickListener,
|
||||
ChatConversationIdListenerInterface,
|
||||
ChatTopBackButtonClickListener {
|
||||
|
||||
private lateinit var binding: ActivityNaviChatBinding
|
||||
private val chatScreenTag: String = NaviChatFragment.TAG
|
||||
private var chatFragment: NaviChatFragment? = null
|
||||
private var conversationId: String? = null
|
||||
private var isChatExitBottomSheetShown: Boolean = false
|
||||
private var productConfigId: String? = null
|
||||
private var deviceBackPressed: Boolean = true
|
||||
|
||||
private val attachmentPickerViewModel by lazy {
|
||||
ViewModelProvider(this)[AttachmentPickerViewModel::class.java]
|
||||
@@ -108,15 +117,25 @@ class NaviChatActivity :
|
||||
intent.extras?.getString(CONVERSATION_ID_PARAM)?.let {
|
||||
bundle.putString(CONVERSATION_ID_PARAM, it)
|
||||
}
|
||||
intent.extras?.getString(SCREEN_NAME)?.let {
|
||||
bundle.putString(SCREEN_NAME, it)
|
||||
productConfigId = it
|
||||
}
|
||||
arguments = bundle
|
||||
}
|
||||
|
||||
override fun onBackPressed() {
|
||||
if (conversationId == null) conversationId = intent.extras?.getString(CONVERSATION_ID_PARAM)
|
||||
crmEventTracker.sendEvent(
|
||||
CHATSCREEN_BACK_BUTTON_CLICK,
|
||||
hashMapOf(CONVERSATION_ID to conversationId.orEmpty())
|
||||
)
|
||||
if (deviceBackPressed) {
|
||||
crmEventTracker.sendEvent(
|
||||
CHATSCREEN_BACK_BUTTON_CLICK,
|
||||
hashMapOf(
|
||||
CONVERSATION_ID to conversationId.orEmpty(),
|
||||
SCREEN_NAME to productConfigId.orEmpty(),
|
||||
SESSION_ID to getSessionId().orEmpty()
|
||||
)
|
||||
)
|
||||
}
|
||||
if (
|
||||
naviChatSharedViewModel.chatExitOptionList.value.isNotNull() &&
|
||||
naviChatSharedViewModel.isChatExitBottomSheetThresholdReached() &&
|
||||
@@ -189,4 +208,8 @@ class NaviChatActivity :
|
||||
override fun onConversationIdReceived(conversationId: String) {
|
||||
conversationId.let { this.conversationId = it }
|
||||
}
|
||||
|
||||
override fun onTopBackButtonClicked(topBackPressed: Boolean) {
|
||||
deviceBackPressed = topBackPressed.not()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -56,12 +56,15 @@ import com.navi.chat.utils.NaviChatAnalytics.Companion.CTA_UNDER_FAQ_CLICK
|
||||
import com.navi.chat.utils.NaviChatAnalytics.Companion.EMAIL_US_CLICK
|
||||
import com.navi.chat.utils.NaviChatAnalytics.Companion.FAQ_CLICK
|
||||
import com.navi.chat.utils.NaviChatAnalytics.Companion.FAQ_CLICK_FROM_SEARCH_SCREEN
|
||||
import com.navi.chat.utils.NaviChatAnalytics.Companion.FAQ_PAGE_LAND
|
||||
import com.navi.chat.utils.NaviChatAnalytics.Companion.FAQ_QUESTION_TEXT
|
||||
import com.navi.chat.utils.NaviChatAnalytics.Companion.FAQ_TAB_CLICK
|
||||
import com.navi.chat.utils.NaviChatAnalytics.Companion.FAQ_TAB_NAME
|
||||
import com.navi.chat.utils.NaviChatAnalytics.Companion.SEND_E_MAIL
|
||||
import com.navi.chat.utils.NaviChatAnalytics.Companion.SESSION_ID
|
||||
import com.navi.chat.utils.NaviChatAnalytics.Companion.TIMESTAMP
|
||||
import com.navi.chat.utils.RECENT_SEARCHES_LIST_SIZE
|
||||
import com.navi.chat.utils.SCREEN_NAME
|
||||
import com.navi.chat.viewmodels.SupportScreenSharedViewModel
|
||||
import com.navi.chat.viewmodels.SupportScreenViewModel
|
||||
import com.navi.common.listeners.HeaderInteractionListener
|
||||
@@ -71,6 +74,7 @@ import com.navi.common.model.ModuleNameV2
|
||||
import com.navi.common.network.models.GenericErrorResponse
|
||||
import com.navi.common.ui.activity.BaseActivity
|
||||
import com.navi.common.ui.fragment.NewCommonBottomSheet
|
||||
import com.navi.common.utils.getSessionId
|
||||
import com.navi.design.R as DesignR
|
||||
import com.navi.design.font.FontWeightEnum
|
||||
import com.navi.design.utils.CornerRadius
|
||||
@@ -127,6 +131,13 @@ class SupportScreenActivity :
|
||||
dialogOnBackPressed = { onBackPressed() }
|
||||
)
|
||||
callSupportScreenApi()
|
||||
crmEventTracker.sendEvent(
|
||||
FAQ_PAGE_LAND,
|
||||
hashMapOf(
|
||||
SCREEN_NAME to sourceScreenName.orEmpty(),
|
||||
SESSION_ID to getSessionId().orEmpty()
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
private fun initListeners() {
|
||||
@@ -139,6 +150,8 @@ class SupportScreenActivity :
|
||||
crmEventTracker.sendEvent(
|
||||
FAQ_TAB_CLICK,
|
||||
hashMapOf(
|
||||
SCREEN_NAME to sourceScreenName.orEmpty(),
|
||||
SESSION_ID to getSessionId().orEmpty(),
|
||||
FAQ_TAB_NAME to
|
||||
supportScreenSharedViewModel.getTabName(position).orEmpty()
|
||||
)
|
||||
@@ -200,6 +213,8 @@ class SupportScreenActivity :
|
||||
binding.footerCta.isVisible = true
|
||||
binding.footerCta.setOnClickListener {
|
||||
sourceScreenName = intent?.extras?.getString(KEY_SCREEN_NAME)
|
||||
val bundle = Bundle()
|
||||
bundle.putString(SCREEN_NAME, sourceScreenName)
|
||||
NaviTrackEvent.trackEventOnClickStream(
|
||||
CHAT_INITIATED,
|
||||
mapOf(
|
||||
@@ -208,7 +223,7 @@ class SupportScreenActivity :
|
||||
Pair("customer_id", userExternalId.toString()),
|
||||
)
|
||||
)
|
||||
moveToNextScreen(actionData)
|
||||
moveToNextScreen(actionData, bundle)
|
||||
}
|
||||
}
|
||||
?: run {
|
||||
@@ -338,8 +353,9 @@ class SupportScreenActivity :
|
||||
crmEventTracker.sendEvent(
|
||||
FAQ_CLICK,
|
||||
hashMapOf(
|
||||
FAQ_QUESTION_TEXT to question,
|
||||
CONFIG_ID to sourceScreenName.orEmpty(),
|
||||
SCREEN_NAME to sourceScreenName.orEmpty(),
|
||||
SESSION_ID to getSessionId().orEmpty(),
|
||||
FAQ_QUESTION_TEXT to question
|
||||
)
|
||||
)
|
||||
val recentSearches =
|
||||
@@ -362,6 +378,8 @@ class SupportScreenActivity :
|
||||
crmEventTracker.sendEvent(
|
||||
FAQ_CLICK_FROM_SEARCH_SCREEN,
|
||||
hashMapOf(
|
||||
SCREEN_NAME to sourceScreenName.orEmpty(),
|
||||
SESSION_ID to getSessionId().orEmpty(),
|
||||
FAQ_QUESTION_TEXT to question,
|
||||
CONFIG_ID to sourceScreenName.orEmpty(),
|
||||
)
|
||||
@@ -426,7 +444,7 @@ class SupportScreenActivity :
|
||||
} catch (e: Exception) {}
|
||||
}
|
||||
|
||||
private fun moveToNextScreen(actionData: ActionData) {
|
||||
private fun moveToNextScreen(actionData: ActionData, bundle: Bundle? = null) {
|
||||
val parameters = actionData.parameters?.toMutableList()
|
||||
val metaData: HashMap<String?, String?> = HashMap()
|
||||
metaData["order_id"] = intent.extras?.getString(ORDER_ID)
|
||||
@@ -438,7 +456,7 @@ class SupportScreenActivity :
|
||||
?.navigateTo(
|
||||
this@SupportScreenActivity,
|
||||
ctaData = CtaData(url = actionData.url, parameters = parameters),
|
||||
bundle = null,
|
||||
bundle = bundle,
|
||||
finish = false,
|
||||
needsResult = true
|
||||
)
|
||||
|
||||
@@ -46,15 +46,19 @@ import com.navi.chat.utils.CSAT_TOP_MARGIN
|
||||
import com.navi.chat.utils.CSAT_WORD_LIMIT
|
||||
import com.navi.chat.utils.NaviChatAnalytics
|
||||
import com.navi.chat.utils.NaviChatAnalytics.Companion.CHAT_SCREEN_CSAT_APPEARS
|
||||
import com.navi.chat.utils.NaviChatAnalytics.Companion.CSAT_BACK_BUTTON_CLICKED
|
||||
import com.navi.chat.utils.NaviChatAnalytics.Companion.CSAT_FEEDBACK_CHIP_TEXT
|
||||
import com.navi.chat.utils.NaviChatAnalytics.Companion.CSAT_FEEDBACK_TEXT
|
||||
import com.navi.chat.utils.NaviChatAnalytics.Companion.CSAT_FEEDBACK_TEXTBOX_CLICK
|
||||
import com.navi.chat.utils.NaviChatAnalytics.Companion.CSAT_RATING
|
||||
import com.navi.chat.utils.NaviChatAnalytics.Companion.CSAT_STAR_SELECT
|
||||
import com.navi.chat.utils.NaviChatAnalytics.Companion.CUSTOMER_ID
|
||||
import com.navi.chat.utils.NaviChatAnalytics.Companion.SESSION_ID
|
||||
import com.navi.chat.utils.SCREEN_NAME
|
||||
import com.navi.chat.viewmodels.NaviChatSharedViewModel
|
||||
import com.navi.common.R as CommonR
|
||||
import com.navi.common.utils.capitalize
|
||||
import com.navi.common.utils.getSessionId
|
||||
import com.navi.common.utils.log
|
||||
import com.navi.design.utils.dpToPx
|
||||
import com.navi.design.utils.underlinedText
|
||||
@@ -100,6 +104,7 @@ class NaviChatCsatFragment : BaseBottomSheet(), View.OnClickListener, CsatOption
|
||||
private val userExternalId =
|
||||
PreferenceManager.getStringPreference(CommonPrefConstants.USER_EXTERNAL_ID)
|
||||
private var conversationId: String? = null
|
||||
private var productConfigId: String? = null
|
||||
|
||||
override fun onStart() {
|
||||
super.onStart()
|
||||
@@ -127,7 +132,11 @@ class NaviChatCsatFragment : BaseBottomSheet(), View.OnClickListener, CsatOption
|
||||
initUI()
|
||||
crmEventTracker.sendEvent(
|
||||
CHAT_SCREEN_CSAT_APPEARS,
|
||||
hashMapOf(CONVERSATION_ID to conversationId.orEmpty())
|
||||
hashMapOf(
|
||||
CONVERSATION_ID to conversationId.orEmpty(),
|
||||
SCREEN_NAME to productConfigId.orEmpty(),
|
||||
SESSION_ID to getSessionId().orEmpty()
|
||||
)
|
||||
)
|
||||
dialog?.setOnKeyListener { _, keyCode, event ->
|
||||
if (keyCode == KeyEvent.KEYCODE_BACK && event.action == KeyEvent.ACTION_UP) {
|
||||
@@ -137,6 +146,20 @@ class NaviChatCsatFragment : BaseBottomSheet(), View.OnClickListener, CsatOption
|
||||
naviChatSharedViewModel.setDismissBottomSheetData(true)
|
||||
if (activity != null && activity is NaviChatActivity) {
|
||||
(activity as NaviChatActivity?)?.onBackPressed()
|
||||
val listOfMetaData = getMetaData()
|
||||
val rating =
|
||||
listOfMetaData.find {
|
||||
it.questionId == naviChatCsatRatingWidget?.metaData()?.questionId
|
||||
}
|
||||
crmEventTracker.sendEvent(
|
||||
CSAT_BACK_BUTTON_CLICKED,
|
||||
hashMapOf(
|
||||
CONVERSATION_ID to conversationId.orEmpty(),
|
||||
CSAT_RATING to rating?.csatResponseValue?.firstOrNull().orEmpty(),
|
||||
SCREEN_NAME to productConfigId.orEmpty(),
|
||||
SESSION_ID to getSessionId().orEmpty()
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
true
|
||||
@@ -374,7 +397,9 @@ class NaviChatCsatFragment : BaseBottomSheet(), View.OnClickListener, CsatOption
|
||||
CSAT_STAR_SELECT,
|
||||
hashMapOf(
|
||||
CONVERSATION_ID to conversationId.orEmpty(),
|
||||
CSAT_RATING to selectedRating.toString()
|
||||
CSAT_RATING to selectedRating.toString(),
|
||||
SCREEN_NAME to productConfigId.orEmpty(),
|
||||
SESSION_ID to getSessionId().orEmpty()
|
||||
)
|
||||
)
|
||||
observeFragmentViewHeight()
|
||||
@@ -411,6 +436,7 @@ class NaviChatCsatFragment : BaseBottomSheet(), View.OnClickListener, CsatOption
|
||||
subQuestion.widgetData?.items?.let {
|
||||
for (csatOptionData in it) {
|
||||
csatOptionData.conversationId = conversationId
|
||||
csatOptionData.screenName = productConfigId
|
||||
}
|
||||
CsatOptionAdapter(
|
||||
listOfCsatOption = it as ArrayList<CsatOptionData>,
|
||||
@@ -560,7 +586,9 @@ class NaviChatCsatFragment : BaseBottomSheet(), View.OnClickListener, CsatOption
|
||||
CSAT_FEEDBACK_CHIP_TEXT to
|
||||
options?.csatResponseValue?.firstOrNull().orEmpty(),
|
||||
CSAT_FEEDBACK_TEXT to
|
||||
feedback?.csatResponseValue?.firstOrNull().orEmpty()
|
||||
feedback?.csatResponseValue?.firstOrNull().orEmpty(),
|
||||
SCREEN_NAME to productConfigId.orEmpty(),
|
||||
SESSION_ID to getSessionId().orEmpty()
|
||||
)
|
||||
)
|
||||
}
|
||||
@@ -581,6 +609,11 @@ class NaviChatCsatFragment : BaseBottomSheet(), View.OnClickListener, CsatOption
|
||||
}
|
||||
}
|
||||
R.id.skipBtn -> {
|
||||
val listOfMetaData = getMetaData()
|
||||
val rating =
|
||||
listOfMetaData.find {
|
||||
it.questionId == naviChatCsatRatingWidget?.metaData()?.questionId
|
||||
}
|
||||
naviChatCsatRatingWidget?.widgetData?.actionData?.secondaryAction?.let {
|
||||
secondaryBtn ->
|
||||
secondaryBtn.metaData?.clickedData?.eventName?.let { eventName ->
|
||||
@@ -588,7 +621,10 @@ class NaviChatCsatFragment : BaseBottomSheet(), View.OnClickListener, CsatOption
|
||||
eventName,
|
||||
hashMapOf(
|
||||
CUSTOMER_ID to userExternalId.toString(),
|
||||
CONVERSATION_ID to conversationId.orEmpty()
|
||||
CONVERSATION_ID to conversationId.orEmpty(),
|
||||
CSAT_RATING to rating?.csatResponseValue?.firstOrNull().orEmpty(),
|
||||
SCREEN_NAME to productConfigId.orEmpty(),
|
||||
SESSION_ID to getSessionId().orEmpty()
|
||||
)
|
||||
)
|
||||
}
|
||||
@@ -671,7 +707,11 @@ class NaviChatCsatFragment : BaseBottomSheet(), View.OnClickListener, CsatOption
|
||||
else {
|
||||
crmEventTracker.sendEvent(
|
||||
CSAT_FEEDBACK_TEXTBOX_CLICK,
|
||||
hashMapOf(CONVERSATION_ID to conversationId.orEmpty())
|
||||
hashMapOf(
|
||||
CONVERSATION_ID to conversationId.orEmpty(),
|
||||
SCREEN_NAME to productConfigId.orEmpty(),
|
||||
SESSION_ID to getSessionId().orEmpty()
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -687,6 +727,10 @@ class NaviChatCsatFragment : BaseBottomSheet(), View.OnClickListener, CsatOption
|
||||
conversationId?.let { this.conversationId = it }
|
||||
}
|
||||
|
||||
fun setProductConfigId(productConfigId: String?) {
|
||||
productConfigId?.let { this.productConfigId = it }
|
||||
}
|
||||
|
||||
companion object {
|
||||
const val TAG = "NaviChatCsatFragment"
|
||||
private const val DEFAULT_STAR = 5
|
||||
|
||||
@@ -69,6 +69,7 @@ import com.navi.chat.di.components.DaggerNaviChatComponent
|
||||
import com.navi.chat.di.dependencies.NaviChatModuleDependencies
|
||||
import com.navi.chat.di.modules.NaviChatModule
|
||||
import com.navi.chat.interfaces.ChatConversationIdListenerInterface
|
||||
import com.navi.chat.interfaces.ChatTopBackButtonClickListener
|
||||
import com.navi.chat.models.ChatDataProviderModel
|
||||
import com.navi.chat.models.FireStoreDataProviderModel
|
||||
import com.navi.chat.models.NaviChatSystemLocalData
|
||||
@@ -82,6 +83,7 @@ import com.navi.chat.utils.*
|
||||
import com.navi.chat.utils.NaviChatAnalytics.Companion.ADDING_AGENT_OR_CUSTOMER_MESSAGE_TO_CHAT_ADAPTER
|
||||
import com.navi.chat.utils.NaviChatAnalytics.Companion.ADDING_BOT_MESSAGE_TO_CHAT_ADAPTER
|
||||
import com.navi.chat.utils.NaviChatAnalytics.Companion.ADDING_NEW_MESSAGE_TO_CHAT_ADAPTER
|
||||
import com.navi.chat.utils.NaviChatAnalytics.Companion.CHATSCREEN_TOP_BACK_BUTTON_CLICK
|
||||
import com.navi.chat.utils.NaviChatAnalytics.Companion.CHAT_DEEPLINK_CLICK
|
||||
import com.navi.chat.utils.NaviChatAnalytics.Companion.CHAT_MESSAGE
|
||||
import com.navi.chat.utils.NaviChatAnalytics.Companion.CHAT_MESSAGE_WIDGET_WITH_RECEIPTS_NOT_NULL
|
||||
@@ -92,6 +94,7 @@ import com.navi.chat.utils.NaviChatAnalytics.Companion.NETWORK_AVAILABLE_IN_CHAT
|
||||
import com.navi.chat.utils.NaviChatAnalytics.Companion.NETWORK_UNAVAILABLE_IN_CHAT
|
||||
import com.navi.chat.utils.NaviChatAnalytics.Companion.NEW_CHAT_TRIGGERED
|
||||
import com.navi.chat.utils.NaviChatAnalytics.Companion.SEND_BUTTON_CLICK
|
||||
import com.navi.chat.utils.NaviChatAnalytics.Companion.SESSION_ID
|
||||
import com.navi.chat.utils.NaviChatAnalytics.Companion.UPDATE_SERVER_MESSAGE_RECEIPTS
|
||||
import com.navi.chat.utils.NaviChatAnalytics.Companion.WRITE_USER_MESSAGE_TO_FIRESTORE
|
||||
import com.navi.chat.viewmodels.AttachmentPickerViewModel
|
||||
@@ -102,6 +105,7 @@ import com.navi.common.constants.EMPTY
|
||||
import com.navi.common.model.common.NetworkConnectivityNudgeData
|
||||
import com.navi.common.ui.fragment.BaseFragment
|
||||
import com.navi.common.utils.Constants
|
||||
import com.navi.common.utils.getSessionId
|
||||
import com.navi.common.utils.log
|
||||
import com.navi.common.utils.observeNonNull
|
||||
import com.navi.design.R as DesignR
|
||||
@@ -183,7 +187,9 @@ class NaviChatFragment : BaseFragment(), WidgetCallback, MessageOperation, Toolb
|
||||
ViewModelProvider(requireActivity())[NaviChatSharedViewModel::class.java]
|
||||
}
|
||||
private var chatConversationIdListenerInterface: ChatConversationIdListenerInterface? = null
|
||||
private var topBackButtonClickListener: ChatTopBackButtonClickListener? = null
|
||||
private var latestMessageLocation: Int? = null
|
||||
private var productConfigId: String? = null
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater,
|
||||
@@ -227,11 +233,13 @@ class NaviChatFragment : BaseFragment(), WidgetCallback, MessageOperation, Toolb
|
||||
override fun onAttach(context: Context) {
|
||||
super.onAttach(context)
|
||||
chatConversationIdListenerInterface = context as? ChatConversationIdListenerInterface
|
||||
topBackButtonClickListener = context as? ChatTopBackButtonClickListener
|
||||
}
|
||||
|
||||
private fun readArguments() {
|
||||
naviChatSystemLocalData = arguments?.getParcelable(NAVI_CHAT_SYSTEM_LOCAL_DATA)
|
||||
arguments?.getString(CONVERSATION_ID_PARAM)?.let { conversationId = it }
|
||||
arguments?.getString(SCREEN_NAME)?.let { productConfigId = it }
|
||||
}
|
||||
|
||||
private fun initUI() {
|
||||
@@ -336,6 +344,25 @@ class NaviChatFragment : BaseFragment(), WidgetCallback, MessageOperation, Toolb
|
||||
viewLifecycleOwner.lifecycleScope.launch {
|
||||
naviChatViewModel.chatHistoryMessages.observeNonNull(viewLifecycleOwner) { widgetData ->
|
||||
if (widgetData.first == 0) {
|
||||
if (widgetData.second.isNotEmpty()) {
|
||||
crmEventTracker.sendEvent(
|
||||
EXISTING_CHAT_TRIGGERED,
|
||||
hashMapOf(
|
||||
CONVERSATION_ID to conversationId.toString(),
|
||||
SCREEN_NAME to productConfigId.orEmpty(),
|
||||
SESSION_ID to getSessionId().orEmpty()
|
||||
)
|
||||
)
|
||||
} else {
|
||||
crmEventTracker.sendEvent(
|
||||
NEW_CHAT_TRIGGERED,
|
||||
hashMapOf(
|
||||
CONVERSATION_ID to conversationId.toString(),
|
||||
SCREEN_NAME to productConfigId.orEmpty(),
|
||||
SESSION_ID to getSessionId().orEmpty()
|
||||
)
|
||||
)
|
||||
}
|
||||
chatRVAdapter.setData(widgetData.second)
|
||||
scrollChatToLatestMessageReceived()
|
||||
if (shouldShowChatResolutionWidget) {
|
||||
@@ -833,13 +860,6 @@ class NaviChatFragment : BaseFragment(), WidgetCallback, MessageOperation, Toolb
|
||||
|
||||
private fun fetchChatData() {
|
||||
fetchChatConversations(conversationId.orEmpty())
|
||||
if (conversationId.isNullOrEmpty()) {
|
||||
crmEventTracker.sendEvent(NEW_CHAT_TRIGGERED)
|
||||
} else {
|
||||
conversationId?.let {
|
||||
crmEventTracker.sendEvent(EXISTING_CHAT_TRIGGERED, hashMapOf(CONVERSATION_ID to it))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun fetchChatConfig() {
|
||||
@@ -1552,6 +1572,7 @@ class NaviChatFragment : BaseFragment(), WidgetCallback, MessageOperation, Toolb
|
||||
val naviChatCsatFragment =
|
||||
NaviChatCsatFragment.getInstance(naviChatCsatRatingWidget)
|
||||
naviChatCsatFragment.setConversationId(conversationId)
|
||||
naviChatCsatFragment.setProductConfigId(productConfigId)
|
||||
if (
|
||||
activity != null &&
|
||||
isAdded &&
|
||||
@@ -1940,6 +1961,15 @@ class NaviChatFragment : BaseFragment(), WidgetCallback, MessageOperation, Toolb
|
||||
}
|
||||
|
||||
override fun onToolbarBackClicked() {
|
||||
crmEventTracker.sendEvent(
|
||||
CHATSCREEN_TOP_BACK_BUTTON_CLICK,
|
||||
hashMapOf(
|
||||
CONVERSATION_ID to conversationId.orEmpty(),
|
||||
SCREEN_NAME to productConfigId.orEmpty(),
|
||||
SESSION_ID to getSessionId().orEmpty()
|
||||
)
|
||||
)
|
||||
topBackButtonClickListener?.onTopBackButtonClicked(true)
|
||||
activity?.onBackPressed()
|
||||
}
|
||||
|
||||
|
||||
@@ -102,6 +102,7 @@ class NaviChatAnalytics private constructor() {
|
||||
const val CSAT_RATING = "csat_rating"
|
||||
const val CSAT_FEEDBACK_TEXT = "csat_feedback_text"
|
||||
const val CSAT_FEEDBACK_CHIP_TEXT = "csat_feedback_chip_text"
|
||||
const val CSAT_BACK_BUTTON_CLICKED = "csat_back_button_clicked"
|
||||
const val FAQ_CTA_BOTTOM_SHEET_POP_UP = "faq_cta_bottom_sheet_pop_up"
|
||||
const val FAQ_CTA_BOTTOM_SHEET_CONTINUE_CLICK = "faq_cta_bottom_sheet_continue_click"
|
||||
const val FAQ_CTA_BOTTOM_SHEET_GO_BACK_CLICK = "faq_cta_bottom_sheet_go_back_click"
|
||||
@@ -154,6 +155,9 @@ class NaviChatAnalytics private constructor() {
|
||||
const val DATA = "data"
|
||||
const val NAVI_CHAT_FETCH_CONVERSATION_ERROR = "navi_chat_fetch_conversations_error"
|
||||
const val NAVI_CHAT_INIT_ERROR = "navi_chat_init_error"
|
||||
const val FAQ_PAGE_LAND = "faq_page_land"
|
||||
const val CHATSCREEN_TOP_BACK_BUTTON_CLICK = "chatscreen_top_back_button_click"
|
||||
const val SESSION_ID = "session_id"
|
||||
|
||||
val naviChatAnalytics: NaviChatAnalytics by lazy { Holder.INSTANCE }
|
||||
}
|
||||
|
||||
@@ -13,6 +13,9 @@ import com.navi.chat.db.utils.crmEventTracker
|
||||
import com.navi.chat.utils.CONVERSATION_ID
|
||||
import com.navi.chat.utils.NaviChatAnalytics.Companion.CSAT_FEEDBACK_CHIP_SELECT
|
||||
import com.navi.chat.utils.NaviChatAnalytics.Companion.CSAT_FEEDBACK_CHIP_TEXT
|
||||
import com.navi.chat.utils.NaviChatAnalytics.Companion.SESSION_ID
|
||||
import com.navi.chat.utils.SCREEN_NAME
|
||||
import com.navi.common.utils.getSessionId
|
||||
import com.navi.naviwidgets.models.response.CsatOptionData
|
||||
import com.navi.naviwidgets.models.response.NaviCsatOptionWidget
|
||||
|
||||
@@ -56,6 +59,8 @@ class CsatOptionVH(private val binding: CsatOptionLayoutBinding) :
|
||||
hashMapOf(
|
||||
CONVERSATION_ID to csatOptionData.conversationId.orEmpty(),
|
||||
CSAT_FEEDBACK_CHIP_TEXT to title.text.toString(),
|
||||
SCREEN_NAME to csatOptionData.screenName.orEmpty(),
|
||||
SESSION_ID to getSessionId().orEmpty()
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
@@ -69,5 +69,6 @@ data class NaviChatCsatOptionWidgetData(
|
||||
data class CsatOptionData(
|
||||
@SerializedName("title") @get:PropertyName("title") val title: String? = null,
|
||||
var isSelected: Boolean = false,
|
||||
var conversationId: String? = null
|
||||
var conversationId: String? = null,
|
||||
var screenName: String? = null
|
||||
) : Serializable, Parcelable
|
||||
|
||||
Reference in New Issue
Block a user