TP-60404 | Sohan Reddy | RnR help chatbot (#10706)
This commit is contained in:
committed by
GitHub
parent
7484cf0ab7
commit
060c2441ea
@@ -4,7 +4,6 @@ import android.app.Activity
|
||||
import androidx.activity.compose.BackHandler
|
||||
import androidx.compose.foundation.Image
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.clickable
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.Column
|
||||
@@ -44,8 +43,11 @@ import androidx.compose.ui.unit.sp
|
||||
import androidx.hilt.navigation.compose.hiltViewModel
|
||||
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
||||
import com.google.accompanist.systemuicontroller.rememberSystemUiController
|
||||
import com.navi.analytics.utils.SCREEN_NAME
|
||||
import com.navi.base.deeplink.DeepLinkManager
|
||||
import com.navi.base.deeplink.util.DeeplinkConstants.CHAT_ACTIVITY
|
||||
import com.navi.base.model.CtaData
|
||||
import com.navi.base.model.LineItem
|
||||
import com.navi.base.utils.EMPTY
|
||||
import com.navi.coin.R
|
||||
import com.navi.coin.models.TransactionHistoryCardData
|
||||
@@ -56,18 +58,23 @@ import com.navi.coin.utils.NaviCoinsAnalytics
|
||||
import com.navi.coin.utils.NaviCoinsAnalytics.Companion.REWARDS_HISTORY_TRANSACTION_DETAIL_BOTTOMSHEET_APPEARS
|
||||
import com.navi.coin.utils.NaviCoinsAnalytics.Companion.REWARDS_HISTORY_TRANSACTION_DETAIL_BOTTOMSHEET_DISAPPEARS
|
||||
import com.navi.coin.views.NaviCoinErrorScreen
|
||||
import com.navi.coin.utils.NaviCoinsAnalytics.Companion.naviCoinsAnalytics
|
||||
import com.navi.coin.views.TabLayout
|
||||
import com.navi.coin.views.TransactionHistoryScreenShimmer
|
||||
import com.navi.coin.vm.CoinHistoryScreenState
|
||||
import com.navi.coin.vm.CoinHistoryScreenVM
|
||||
import com.navi.coin.widgetFactory.CoinWidgetRenderer
|
||||
import com.navi.common.constants.CHAT_BOT_SCREEN_NAME
|
||||
import com.navi.common.forge.model.TabConfig
|
||||
import com.navi.common.forge.model.WidgetModelDefinition
|
||||
import com.navi.common.uitron.model.action.CtaAction
|
||||
import com.navi.common.utils.getScreenHeight
|
||||
import com.navi.design.theme.composeFontFamily
|
||||
import com.navi.design.theme.ttComposeFontFamily
|
||||
import com.navi.design.utils.dpToPx
|
||||
import com.navi.naviwidgets.models.RewardType
|
||||
import com.navi.rr.common.constants.COIN_HISTORY_SCREEN
|
||||
import com.navi.rr.common.constants.PROFILE_RR_SCREEN
|
||||
import com.navi.rr.utils.clickable
|
||||
import com.navi.uitron.model.UiTronResponse
|
||||
import com.navi.uitron.model.data.SpannableTextData
|
||||
import com.navi.uitron.model.data.TextData
|
||||
@@ -394,6 +401,7 @@ fun CoinHistoryScreenHeader(
|
||||
navigator: DestinationsNavigator
|
||||
) {
|
||||
val context = LocalContext.current as Activity
|
||||
val coroutineScope = rememberCoroutineScope()
|
||||
Box(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
@@ -402,7 +410,7 @@ fun CoinHistoryScreenHeader(
|
||||
Box(modifier = Modifier.padding(start = 16.dp, top = 20.dp, bottom = 20.dp, end = 40.dp)) {
|
||||
Image(
|
||||
modifier = Modifier
|
||||
.clickable {
|
||||
.clickable(disableRipple = true) {
|
||||
if (!navigator.navigateUp()) {
|
||||
context.finish()
|
||||
}
|
||||
@@ -422,12 +430,53 @@ fun CoinHistoryScreenHeader(
|
||||
text = stringResource(R.string.reward_history), style = TextStyle(
|
||||
fontSize = 14.sp,
|
||||
lineHeight = 22.sp,
|
||||
fontFamily = composeFontFamily,
|
||||
fontFamily = ttComposeFontFamily,
|
||||
fontWeight = FontWeight(400),
|
||||
color = Color(0xFFFFFFFF),
|
||||
)
|
||||
)
|
||||
}
|
||||
Row(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(end = 16.dp),
|
||||
horizontalArrangement = Arrangement.End,
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
Text(
|
||||
text = stringResource(CommonR.string.help),
|
||||
style = TextStyle(
|
||||
fontSize = 14.sp,
|
||||
lineHeight = 22.sp,
|
||||
fontFamily = ttComposeFontFamily,
|
||||
fontWeight = FontWeight(600),
|
||||
color = Color(0xFFFFFFFF),
|
||||
),
|
||||
modifier = Modifier.clickable(disableRipple = true, debounceTime = 2000) {
|
||||
coroutineScope.launch {
|
||||
naviCoinsAnalytics.sendEvent(
|
||||
eventName = NaviCoinsAnalytics.REWARDS_HELP_CTA_CLICKED,
|
||||
parameters = mutableMapOf(
|
||||
SCREEN_NAME to COIN_HISTORY_SCREEN
|
||||
)
|
||||
)
|
||||
}
|
||||
DeepLinkManager.getDeepLinkListener()?.navigateTo(
|
||||
context,
|
||||
CtaData(
|
||||
url = CHAT_ACTIVITY,
|
||||
parameters = listOf(
|
||||
LineItem(
|
||||
key = CHAT_BOT_SCREEN_NAME,
|
||||
value = PROFILE_RR_SCREEN
|
||||
)
|
||||
)
|
||||
),
|
||||
finish = false
|
||||
)
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -11,8 +11,6 @@ import android.app.Activity
|
||||
import androidx.activity.compose.BackHandler
|
||||
import androidx.compose.foundation.Image
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.clickable
|
||||
import androidx.compose.foundation.interaction.MutableInteractionSource
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.Column
|
||||
@@ -46,6 +44,7 @@ import androidx.compose.ui.platform.LocalContext
|
||||
import androidx.compose.ui.res.painterResource
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.text.TextStyle
|
||||
import androidx.compose.ui.text.font.FontWeight
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.unit.sp
|
||||
import androidx.compose.ui.zIndex
|
||||
@@ -55,7 +54,9 @@ import androidx.paging.compose.LazyPagingItems
|
||||
import androidx.paging.compose.collectAsLazyPagingItems
|
||||
import com.google.accompanist.systemuicontroller.rememberSystemUiController
|
||||
import com.navi.base.deeplink.DeepLinkManager
|
||||
import com.navi.base.deeplink.util.DeeplinkConstants.CHAT_ACTIVITY
|
||||
import com.navi.base.model.CtaData
|
||||
import com.navi.base.model.LineItem
|
||||
import com.navi.coin.R
|
||||
import com.navi.coin.models.ScratchCard
|
||||
import com.navi.coin.models.states.ScratchCardHistoryScreenState
|
||||
@@ -71,18 +72,21 @@ import com.navi.coin.utils.Constants.RR_BOTTOM_SHEET
|
||||
import com.navi.coin.utils.Constants.SCREEN_NAME
|
||||
import com.navi.coin.utils.Constants.TRANSACTION_ID
|
||||
import com.navi.coin.utils.Constants.Y
|
||||
import com.navi.coin.utils.NaviCoinsAnalytics
|
||||
import com.navi.coin.utils.SemiCircleShape
|
||||
import com.navi.coin.views.NaviCoinErrorScreen
|
||||
import com.navi.coin.views.ScratchCardListView
|
||||
import com.navi.coin.vm.ScratchCardScreenVM
|
||||
import com.navi.common.constants.CHAT_BOT_SCREEN_NAME
|
||||
import com.navi.common.forge.model.ScreenDefinition
|
||||
import com.navi.common.uitron.model.action.CtaAction
|
||||
import com.navi.common.utils.EMPTY
|
||||
import com.navi.common.utils.getScreenHeight
|
||||
import com.navi.design.font.FontWeightEnum
|
||||
import com.navi.design.theme.composeFontFamily
|
||||
import com.navi.design.theme.getFontWeight
|
||||
import com.navi.design.theme.ttComposeFontFamily
|
||||
import com.navi.design.utils.dpToPx
|
||||
import com.navi.rr.common.constants.PROFILE_RR_SCREEN
|
||||
import com.navi.rr.common.constants.SCRATCH_CARD_HISTORY_SCREEN
|
||||
import com.navi.rr.common.renderer.InitBottomSheet
|
||||
import com.navi.rr.common.states.RRBottomSheetStateHolder
|
||||
@@ -93,6 +97,7 @@ import com.navi.rr.scratchcard.model.ScratchCardBackResponse
|
||||
import com.navi.rr.scratchcard.model.ScratchCardResponse
|
||||
import com.navi.rr.scratchcard.ui.compose.ScratchCardComposable
|
||||
import com.navi.rr.utils.EventConstants
|
||||
import com.navi.rr.utils.clickable
|
||||
import com.navi.rr.utils.getGsonBuilders
|
||||
import com.ramcosta.composedestinations.annotation.Destination
|
||||
import com.ramcosta.composedestinations.navigation.DestinationsNavigator
|
||||
@@ -555,12 +560,11 @@ fun ScratchCardHistoryScreenHeader(
|
||||
.padding(top = 24.dp),
|
||||
contentAlignment = Alignment.CenterStart
|
||||
) {
|
||||
Box(modifier = Modifier.padding(start = 16.dp, top = 20.dp, bottom = 20.dp, end = 40.dp)){
|
||||
Box(modifier = Modifier.padding(start = 16.dp, top = 20.dp, bottom = 20.dp, end = 40.dp)) {
|
||||
Image(
|
||||
modifier = Modifier
|
||||
.clickable(
|
||||
interactionSource = remember { MutableInteractionSource() },
|
||||
indication = null
|
||||
disableRipple = true,
|
||||
) {
|
||||
coroutineScope.launch {
|
||||
viewModel.countDownHelper.cancelAllTimers()
|
||||
@@ -569,10 +573,12 @@ fun ScratchCardHistoryScreenHeader(
|
||||
context.finish()
|
||||
}
|
||||
}
|
||||
.height(24.dp).width(24.dp),
|
||||
.height(24.dp)
|
||||
.width(24.dp),
|
||||
painter = painterResource(CommonR.drawable.ic_arrow_left_white),
|
||||
contentDescription = null)
|
||||
}
|
||||
|
||||
Row(
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
horizontalArrangement = Arrangement.Center,
|
||||
@@ -582,12 +588,54 @@ fun ScratchCardHistoryScreenHeader(
|
||||
text = stringResource(id = R.string.reward_history), style = TextStyle(
|
||||
fontSize = 14.sp,
|
||||
lineHeight = 22.sp,
|
||||
fontFamily = composeFontFamily,
|
||||
fontFamily = ttComposeFontFamily,
|
||||
fontWeight = getFontWeight(FontWeightEnum.TT_MEDIUM),
|
||||
color = Color.White,
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
Row(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(end = 16.dp),
|
||||
horizontalArrangement = Arrangement.End,
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
Text(
|
||||
text = stringResource(CommonR.string.help),
|
||||
style = TextStyle(
|
||||
fontSize = 14.sp,
|
||||
lineHeight = 22.sp,
|
||||
fontFamily = ttComposeFontFamily,
|
||||
fontWeight = FontWeight(600),
|
||||
color = Color(0xFFFFFFFF),
|
||||
),
|
||||
modifier = Modifier.clickable(disableRipple = true, debounceTime = 2000) {
|
||||
coroutineScope.launch {
|
||||
NaviCoinsAnalytics.naviCoinsAnalytics.sendEvent(
|
||||
eventName = NaviCoinsAnalytics.REWARDS_HELP_CTA_CLICKED,
|
||||
parameters = mutableMapOf(
|
||||
SCREEN_NAME to SCRATCH_CARD_HISTORY_SCREEN
|
||||
)
|
||||
)
|
||||
}
|
||||
DeepLinkManager.getDeepLinkListener()?.navigateTo(
|
||||
context,
|
||||
CtaData(
|
||||
url = CHAT_ACTIVITY,
|
||||
parameters = listOf(
|
||||
LineItem(
|
||||
key = CHAT_BOT_SCREEN_NAME,
|
||||
value = PROFILE_RR_SCREEN
|
||||
)
|
||||
)
|
||||
),
|
||||
finish = false
|
||||
)
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -66,6 +66,8 @@ class NaviCoinsAnalytics private constructor() {
|
||||
const val DEV_REDEEM_COIN_SUCCESS_EVENT = "dev_redeem_coin_success"
|
||||
const val DEV_REDEEM_COIN_FAILURE_EVENT = "dev_redeem_coin_failure"
|
||||
|
||||
const val REWARDS_HELP_CTA_CLICKED = "navi_coin_help_button_clicked"
|
||||
|
||||
val naviCoinsAnalytics: NaviCoinsAnalytics by lazy { Holder.INSTANCE }
|
||||
}
|
||||
}
|
||||
@@ -16,3 +16,9 @@ const val SCRATCH_CARD_GRATIFICATION_SCREEN = "SCRATCH_CARD_GRATIFICATION_SCREEN
|
||||
const val SCRATCH_CARD_HISTORY_SCREEN = "SCRATCH_CARD_HISTORY_SCREEN"
|
||||
const val VERIFY_POLLING_DETAILS_SCREEN = "VERIFY_POLLING_DETAILS"
|
||||
const val KYC_VERIFY_SCREEN = "KYC_VERIFY_SCREEN"
|
||||
|
||||
const val COIN_HOME_SCREEN = "COIN_HOME_SCREEN"
|
||||
const val COIN_HISTORY_SCREEN = "COIN_HISTORY_SCREEN"
|
||||
|
||||
// Misc
|
||||
const val PROFILE_RR_SCREEN = "PROFILE_RR_SCREEN"
|
||||
@@ -28,7 +28,9 @@ import androidx.compose.ui.graphics.Brush
|
||||
import androidx.compose.ui.layout.onGloballyPositioned
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.unit.IntSize
|
||||
import com.navi.common.utils.ClickDebounce
|
||||
import com.navi.common.utils.EMPTY
|
||||
import com.navi.common.utils.get
|
||||
import com.navi.common.utils.log
|
||||
import com.navi.rr.R
|
||||
import org.json.JSONArray
|
||||
@@ -143,17 +145,26 @@ private fun JSONObject.filterEntriesTo(
|
||||
return destination
|
||||
}
|
||||
|
||||
fun Modifier.clickable(disableRipple: Boolean? = false, enabled: Boolean? = true, onClick: () -> Unit): Modifier = composed {
|
||||
fun Modifier.clickable(disableRipple: Boolean? = false, enabled: Boolean? = true, debounceTime: Long? = null, onClick: () -> Unit): Modifier = composed {
|
||||
val clickDebounce = remember { ClickDebounce.get() }
|
||||
if (disableRipple == true) {
|
||||
clickable(interactionSource = NoRippleIndicationSource(),
|
||||
indication = null,
|
||||
enabled = enabled ?: true,
|
||||
onClick = {
|
||||
onClick()
|
||||
debounceTime?.let {
|
||||
clickDebounce.processClick(it) { onClick() }
|
||||
} ?: run {
|
||||
onClick()
|
||||
}
|
||||
})
|
||||
} else {
|
||||
clickable {
|
||||
onClick()
|
||||
debounceTime?.let {
|
||||
clickDebounce.processClick(it) { onClick() }
|
||||
} ?: run {
|
||||
onClick()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user