NTP-16964: Webview redirection for crm tickets (#13920)
This commit is contained in:
@@ -47,8 +47,9 @@ import com.navi.base.utils.replaceAngularBrackets
|
||||
import com.navi.bbps.entry.NaviBbpsRouter
|
||||
import com.navi.chat.models.NaviChatSystemLocalData
|
||||
import com.navi.chat.ui.activities.NaviHelpCenterActivity
|
||||
import com.navi.chat.ui.activities.NaviTicketViewActivity
|
||||
import com.navi.chat.utils.ACTIVE_CHAT_CONV
|
||||
import com.navi.chat.utils.CHAT_TOUCH_POINT_CLICKED
|
||||
import com.navi.chat.utils.CONVERSATION_ID_PARAM
|
||||
import com.navi.chat.utils.DEFAULT_SOURCE_ID_FOR_PL
|
||||
import com.navi.chat.utils.NAVI_CHAT_SYSTEM_LOCAL_DATA
|
||||
import com.navi.chat.utils.SOURCE
|
||||
@@ -426,7 +427,7 @@ object NaviDeepLinkNavigator : DeepLinkListener {
|
||||
intent = Intent(activity, NaviHelpCenterActivity::class.java)
|
||||
}
|
||||
ALL_TICKETS_V2 -> {
|
||||
intent = Intent(activity, NaviTicketViewActivity::class.java)
|
||||
intent = getCrmWebViewIntent(activity = activity, ctaUrl = ALL_TICKETS_V2)
|
||||
}
|
||||
PRODUCT_HELP_PAGE -> {
|
||||
intent =
|
||||
@@ -442,7 +443,8 @@ object NaviDeepLinkNavigator : DeepLinkListener {
|
||||
var metaData: HashMap<String?, String?>? = null
|
||||
var fetchHistoryByScreenName = true
|
||||
var idempotencyKey: String? = null
|
||||
var targetPlatform: String? = null
|
||||
var fromActiveChatConv: String? = null
|
||||
var conversationId: String? = null
|
||||
if (ctaData.parameters.isNullOrEmpty()) {
|
||||
bundle.getString(CHAT_BOT_SCREEN_NAME)?.let { keyValue ->
|
||||
shareableLink = keyValue
|
||||
@@ -477,8 +479,11 @@ object NaviDeepLinkNavigator : DeepLinkListener {
|
||||
CHAT_IDEMPOTENCY_KEY -> {
|
||||
idempotencyKey = keyValue.value.toString()
|
||||
}
|
||||
TARGET_PLATFORM -> {
|
||||
targetPlatform = keyValue.value.toString()
|
||||
ACTIVE_CHAT_CONV -> {
|
||||
fromActiveChatConv = keyValue.value.toString()
|
||||
}
|
||||
CONVERSATION_ID_PARAM -> {
|
||||
conversationId = keyValue.value.toString()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -502,7 +507,8 @@ object NaviDeepLinkNavigator : DeepLinkListener {
|
||||
getCrmWebViewIntent(
|
||||
activity = activity,
|
||||
ctaUrl = CHAT_ACTIVITY,
|
||||
platform = targetPlatform
|
||||
fromActiveChat = fromActiveChatConv,
|
||||
conversationId = conversationId
|
||||
)
|
||||
bundle.putParcelable(NAVI_CHAT_SYSTEM_LOCAL_DATA, naviChatSystemLocalData)
|
||||
NaviTrackEvent.trackEventOnClickStream(
|
||||
|
||||
@@ -11,5 +11,7 @@ data class WebViewIntent(
|
||||
val naviClickActionUrl: String?,
|
||||
val configId: String?,
|
||||
val orderId: String?,
|
||||
val productType: String?
|
||||
val productType: String?,
|
||||
val fromActiveChat: Boolean? = false,
|
||||
val conversationId: String? = null
|
||||
)
|
||||
|
||||
@@ -31,12 +31,15 @@ import com.navi.chat.R
|
||||
import com.navi.chat.bridges.NaviChatWebBridge
|
||||
import com.navi.chat.models.WebViewIntent
|
||||
import com.navi.chat.network.retrofit.CRMWebViewClient
|
||||
import com.navi.chat.utils.ACTIVE_CHAT_CONV
|
||||
import com.navi.chat.utils.CHAT_BOT_SCREEN_NAME
|
||||
import com.navi.chat.utils.CONVERSATION_ID_PARAM
|
||||
import com.navi.chat.utils.CRM_WEB_VIEW_ACTIVITY
|
||||
import com.navi.chat.utils.EXTERNAL_DEEPLINK_BASE_URL
|
||||
import com.navi.chat.utils.NAVI_CLICK_ACTION_URL
|
||||
import com.navi.chat.utils.NAVI_JAVA_SCRIPT
|
||||
import com.navi.chat.utils.NaviChatAnalytics
|
||||
import com.navi.chat.utils.NaviChatAnalytics.Companion.ALL_TICKETS_V2
|
||||
import com.navi.chat.utils.NaviChatAnalytics.Companion.CRM_WEB_VIEW_LAND
|
||||
import com.navi.chat.utils.NaviChatAnalytics.Companion.SOURCE_SCREEN
|
||||
import com.navi.chat.utils.ORDER_ID
|
||||
@@ -83,16 +86,25 @@ class CRMWebViewActivity : BaseActivity() {
|
||||
?: intent.getStringExtra(SCREEN_NAME_CAPITAL)
|
||||
?: intent.getStringExtra(CHAT_BOT_SCREEN_NAME)
|
||||
|
||||
val fromActiveChat = intent.getStringExtra(ACTIVE_CHAT_CONV)
|
||||
val conversationId = intent.getStringExtra(CONVERSATION_ID_PARAM)
|
||||
|
||||
webViewIntent =
|
||||
WebViewIntent(
|
||||
naviClickActionUrl = intent.getStringExtra(NAVI_CLICK_ACTION_URL),
|
||||
configId = configId,
|
||||
orderId = intent.getStringExtra(ORDER_ID),
|
||||
productType = intent.getStringExtra(PRODUCT_TYPE)
|
||||
productType = intent.getStringExtra(PRODUCT_TYPE),
|
||||
fromActiveChat = fromActiveChat.toBoolean(),
|
||||
conversationId = conversationId
|
||||
)
|
||||
pathUrl = viewModel.buildPathUrl(webViewIntent)
|
||||
|
||||
if (pathUrl.isNullOrEmpty() || webViewIntent?.configId.isNullOrEmpty()) {
|
||||
if (
|
||||
pathUrl.isNullOrEmpty() ||
|
||||
(webViewIntent?.naviClickActionUrl != ALL_TICKETS_V2 &&
|
||||
webViewIntent?.configId.isNullOrEmpty())
|
||||
) {
|
||||
viewModel.showError.value = true
|
||||
} else {
|
||||
viewModel.showLoader.value = false
|
||||
|
||||
@@ -20,6 +20,7 @@ import com.navi.base.model.NaviClickAction
|
||||
import com.navi.chat.R
|
||||
import com.navi.chat.databinding.ActivityHelpCenterBinding
|
||||
import com.navi.chat.ui.activities.SupportScreenActivity.Companion.KEY_SCREEN_NAME
|
||||
import com.navi.chat.utils.ACTIVE_CHAT_CONV
|
||||
import com.navi.chat.utils.ANDROID
|
||||
import com.navi.chat.utils.CONVERSATION_ID
|
||||
import com.navi.chat.utils.CONVERSATION_ID_PARAM
|
||||
@@ -173,6 +174,7 @@ class NaviHelpCenterActivity : BaseActivity(), HeaderInteractionListener, Widget
|
||||
hashMapOf(CONVERSATION_ID to conversationId)
|
||||
)
|
||||
actionDataParams?.add(LineItem(TARGET_PLATFORM, ANDROID))
|
||||
actionDataParams?.add(LineItem(ACTIVE_CHAT_CONV, true.toString()))
|
||||
}
|
||||
|
||||
DeepLinkManager.getDeepLinkListener()
|
||||
|
||||
@@ -19,6 +19,7 @@ import com.navi.base.sharedpref.PreferenceManager
|
||||
import com.navi.chat.db.utils.crmEventTracker
|
||||
import com.navi.chat.models.TicketDetailsData
|
||||
import com.navi.chat.ui.compose.TicketScreen
|
||||
import com.navi.chat.utils.ACTIVE_CHAT_CONV
|
||||
import com.navi.chat.utils.ANDROID
|
||||
import com.navi.chat.utils.CONVERSATION_ID
|
||||
import com.navi.chat.utils.CONVERSATION_ID_PARAM
|
||||
@@ -89,6 +90,8 @@ class NaviTicketViewActivity : BaseActivity() {
|
||||
val actionDataParams = ticketDetailsData.actionData.parameters?.toMutableList()
|
||||
actionDataParams?.add(LineItem(CONVERSATION_ID_PARAM, ticketDetailsData.conversationId))
|
||||
actionDataParams?.add(LineItem(TARGET_PLATFORM, ANDROID))
|
||||
actionDataParams?.add(LineItem(ACTIVE_CHAT_CONV, true.toString()))
|
||||
|
||||
DeepLinkManager.getDeepLinkListener()
|
||||
?.navigateTo(
|
||||
this@NaviTicketViewActivity,
|
||||
|
||||
@@ -13,25 +13,24 @@ import android.os.Bundle
|
||||
import com.navi.chat.ui.activities.CRMWebViewActivity
|
||||
import com.navi.chat.ui.activities.NaviChatActivity
|
||||
import com.navi.chat.ui.activities.NaviHelpCenterActivity
|
||||
import com.navi.chat.ui.activities.NaviTicketViewActivity
|
||||
import com.navi.chat.ui.activities.SupportScreenActivity
|
||||
import com.navi.chat.utils.NaviChatAnalytics.Companion.ALL_TICKETS_V2
|
||||
import com.navi.common.firebaseremoteconfig.FirebaseRemoteConfigHelper
|
||||
import com.navi.common.firebaseremoteconfig.FirebaseRemoteConfigHelper.CRM_WEB_VIEW_ENABLED
|
||||
|
||||
fun getCrmWebViewIntent(activity: Activity?, ctaUrl: String, platform: String? = null): Intent {
|
||||
|
||||
if (platform == ANDROID) {
|
||||
return when (ctaUrl) {
|
||||
PRODUCT_HELP_PAGE -> Intent(activity, SupportScreenActivity::class.java)
|
||||
CHAT_ACTIVITY -> Intent(activity, NaviChatActivity::class.java)
|
||||
else -> Intent(activity, NaviHelpCenterActivity::class.java)
|
||||
}
|
||||
}
|
||||
|
||||
fun getCrmWebViewIntent(
|
||||
activity: Activity?,
|
||||
ctaUrl: String,
|
||||
fromActiveChat: String? = null,
|
||||
conversationId: String? = null
|
||||
): Intent {
|
||||
val targetActivity =
|
||||
when {
|
||||
FirebaseRemoteConfigHelper.getBoolean(CRM_WEB_VIEW_ENABLED, false) -> {
|
||||
when (ctaUrl) {
|
||||
PRODUCT_HELP_PAGE,
|
||||
ALL_TICKETS_V2,
|
||||
CHAT_ACTIVITY -> CRMWebViewActivity::class.java
|
||||
else -> NaviHelpCenterActivity::class.java
|
||||
}
|
||||
@@ -40,14 +39,17 @@ fun getCrmWebViewIntent(activity: Activity?, ctaUrl: String, platform: String? =
|
||||
when (ctaUrl) {
|
||||
PRODUCT_HELP_PAGE -> SupportScreenActivity::class.java
|
||||
CHAT_ACTIVITY -> NaviChatActivity::class.java
|
||||
ALL_TICKETS_V2 -> NaviTicketViewActivity::class.java
|
||||
else -> NaviHelpCenterActivity::class.java
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return Intent(activity, targetActivity).apply {
|
||||
if (ctaUrl == PRODUCT_HELP_PAGE || ctaUrl == CHAT_ACTIVITY) {
|
||||
if (ctaUrl == PRODUCT_HELP_PAGE || ctaUrl == CHAT_ACTIVITY || ctaUrl == ALL_TICKETS_V2) {
|
||||
putExtra(NAVI_CLICK_ACTION_URL, ctaUrl)
|
||||
putExtra(ACTIVE_CHAT_CONV, fromActiveChat)
|
||||
putExtra(CONVERSATION_ID_PARAM, conversationId)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -60,6 +62,7 @@ fun navigateToCrm(activity: Activity?, bundle: Bundle?, path: String?) {
|
||||
when (path) {
|
||||
PRODUCT_HELP_PAGE -> Intent(activity, SupportScreenActivity::class.java)
|
||||
CHAT_ACTIVITY -> Intent(activity, NaviChatActivity::class.java)
|
||||
ALL_TICKETS_V2 -> Intent(activity, NaviTicketViewActivity::class.java)
|
||||
else -> Intent(activity, NaviHelpCenterActivity::class.java)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -72,6 +72,7 @@ const val UPLOAD_FROM_GALLERY = "Upload from gallery"
|
||||
const val FILE_TYPE_PARAM = "fileType"
|
||||
const val CONVERSATION_ID_PARAM = "conversationId"
|
||||
const val TARGET_PLATFORM = "targetPlatform"
|
||||
const val ACTIVE_CHAT_CONV = "activeChatConversation"
|
||||
const val ANDROID = "Android"
|
||||
const val TYPING_CUES_PATH_AGENT = "agent"
|
||||
const val TYPING_CUES_PATH_USER = "user"
|
||||
@@ -140,6 +141,8 @@ const val CODE_VERIFIER = "codeVerifier"
|
||||
const val CHAT_ACTIVITY = "chatInHouse"
|
||||
const val PRODUCT_HELP_PAGE = "PRODUCT_HELP_PAGE"
|
||||
const val HELP_PATH = "/help"
|
||||
const val ISSUES_PATH = "/issues"
|
||||
const val CHAT_PATH = "/chat"
|
||||
const val AUTOLOGIN_PATH = "/autologin"
|
||||
const val CUSTOMER_SUPPORT_PATH = "/customer-support"
|
||||
const val NAVI_CLICK_ACTION_URL = "NAVI_CLICK_ACTION_URL"
|
||||
|
||||
@@ -23,8 +23,10 @@ import com.navi.chat.utils.AMPERSAND
|
||||
import com.navi.chat.utils.APPLICANT_TYPE
|
||||
import com.navi.chat.utils.APPLICATION_TYPE
|
||||
import com.navi.chat.utils.AUTOLOGIN_PATH
|
||||
import com.navi.chat.utils.CHAT_PATH
|
||||
import com.navi.chat.utils.CODE_VERIFIER
|
||||
import com.navi.chat.utils.CONTINUE
|
||||
import com.navi.chat.utils.CONVERSATION_ID_PARAM
|
||||
import com.navi.chat.utils.CRM_WEB_APPLICANT_TYPE
|
||||
import com.navi.chat.utils.CRM_WEB_APPLICATION_TYPE
|
||||
import com.navi.chat.utils.CRM_WEB_PLATFORM_TYPE
|
||||
@@ -33,8 +35,11 @@ import com.navi.chat.utils.CRM_WEB_VIEW_URL_PARAM_CONTINUE
|
||||
import com.navi.chat.utils.CUSTOMER
|
||||
import com.navi.chat.utils.CUSTOMER_SUPPORT_PATH
|
||||
import com.navi.chat.utils.EQUALS
|
||||
import com.navi.chat.utils.FORWARD_SLASH
|
||||
import com.navi.chat.utils.HELP_PATH
|
||||
import com.navi.chat.utils.ISSUES_PATH
|
||||
import com.navi.chat.utils.IS_LANDING_ROUTE_TRUE
|
||||
import com.navi.chat.utils.NaviChatAnalytics.Companion.ALL_TICKETS_V2
|
||||
import com.navi.chat.utils.ORDER_ID
|
||||
import com.navi.chat.utils.PATH_PARAM_SCREEN_NAME
|
||||
import com.navi.chat.utils.PLATFORM_TYPE
|
||||
@@ -156,18 +161,35 @@ constructor(
|
||||
webViewIntent.configId.isNullOrEmpty() ||
|
||||
webViewIntent.naviClickActionUrl.isNullOrEmpty()
|
||||
) {
|
||||
_showError.postValue(true)
|
||||
return EMPTY
|
||||
if (webViewIntent != null && webViewIntent.naviClickActionUrl == ALL_TICKETS_V2) {
|
||||
_showError.postValue(false)
|
||||
} else {
|
||||
_showError.postValue(true)
|
||||
return EMPTY
|
||||
}
|
||||
}
|
||||
_showError.postValue(false)
|
||||
|
||||
val pathUrl = StringBuilder().append(HELP_PATH)
|
||||
val pathUrl =
|
||||
if (webViewIntent.fromActiveChat == true && webViewIntent.configId != null)
|
||||
StringBuilder()
|
||||
.append(CHAT_PATH)
|
||||
.append(FORWARD_SLASH)
|
||||
.append(webViewIntent.configId)
|
||||
else if (webViewIntent.naviClickActionUrl == ALL_TICKETS_V2)
|
||||
StringBuilder().append(ISSUES_PATH)
|
||||
else StringBuilder().append(HELP_PATH)
|
||||
|
||||
pathUrl
|
||||
.append(QUESTION_MARK)
|
||||
.append(PATH_PARAM_SCREEN_NAME)
|
||||
.append(EQUALS)
|
||||
.append(webViewIntent.configId)
|
||||
pathUrl.append(QUESTION_MARK).append(IS_LANDING_ROUTE_TRUE)
|
||||
|
||||
webViewIntent.configId?.let {
|
||||
if (webViewIntent.fromActiveChat != true) {
|
||||
pathUrl.append(AMPERSAND).append(PATH_PARAM_SCREEN_NAME).append(EQUALS).append(it)
|
||||
}
|
||||
}
|
||||
|
||||
webViewIntent.conversationId?.let {
|
||||
pathUrl.append(AMPERSAND).append(CONVERSATION_ID_PARAM).append(EQUALS).append(it)
|
||||
}
|
||||
|
||||
webViewIntent.orderId?.let {
|
||||
pathUrl.append(AMPERSAND).append(ORDER_ID).append(EQUALS).append(it)
|
||||
@@ -175,7 +197,6 @@ constructor(
|
||||
webViewIntent.productType?.let {
|
||||
pathUrl.append(AMPERSAND).append(PRODUCT).append(EQUALS).append(it)
|
||||
}
|
||||
pathUrl.append(AMPERSAND).append(IS_LANDING_ROUTE_TRUE)
|
||||
return pathUrl.toString()
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user