NTP-51538 | Trust & Arc - Animation Integration (#15674)

This commit is contained in:
Aparna Vadlamani
2025-04-08 16:34:07 +05:30
committed by GitHub
parent d3e3ebccb8
commit 4020535303
5 changed files with 61 additions and 4 deletions

View File

@@ -37,6 +37,7 @@ data class HpBottomSheetContent(
@Stable
open class HpBottomSheetConfig(
val isCancellable: Boolean? = true,
val isSwipeable: Boolean? = true,
val contentColor: String? = null,
val scrimColor: String? = null,
val onDismiss: () -> Unit = {},

View File

@@ -22,6 +22,7 @@ data class BottomSheetData(
@Stable
data class BottomSheetConfig(
val isCancellable: Boolean? = true,
val isSwipeable: Boolean? = true,
val contentColor: String? = null,
val scrimColor: String? = null,
val onDismiss: UiTronActionData? = null,

View File

@@ -18,6 +18,7 @@ import androidx.compose.material3.BottomSheetDefaults
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.ModalBottomSheet
import androidx.compose.material3.ModalBottomSheetProperties
import androidx.compose.material3.SheetValue
import androidx.compose.material3.rememberModalBottomSheetState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
@@ -31,6 +32,7 @@ import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.SecureFlagPolicy
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.navi.alfred.AlfredManager
import com.navi.ap.common.handler.HandlePublishEventAction
import com.navi.ap.utils.constants.BOTTOM_SHEET_VISIBILITY
import com.navi.base.model.CtaData
import com.navi.base.utils.orTrue
@@ -42,6 +44,8 @@ import com.navi.common.uitron.render.CommonCustomUiTronRenderer
import com.navi.common.utils.CommonNaviAnalytics
import com.navi.common.utils.Constants.HIDE
import com.navi.common.utils.getStatusBarHeight
import com.navi.uitron.model.action.PublishEventAction
import com.navi.uitron.model.action.PublishableEventData
import com.navi.uitron.model.data.UiTronAction
import com.navi.uitron.model.data.UiTronActionData
import com.navi.uitron.render.UiTronRenderer
@@ -59,6 +63,10 @@ import com.naviapp.home.model.HpBottomSheetState
import com.naviapp.home.model.InvestmentBottomSheetData
import com.naviapp.home.viewmodel.SharedVM
import com.naviapp.utils.Constants.HOME_SCREEN_IN_CAPS
import com.naviapp.utils.Constants.HomePageConstants.BOTTOM_SHEET_EXPANDED
import com.naviapp.utils.Constants.HomePageConstants.BOTTOM_SHEET_HIDDEN
import com.naviapp.utils.Constants.HomePageConstants.EXPANDED_STATE
import com.naviapp.utils.Constants.HomePageConstants.HIDDEN_STATE
@OptIn(ExperimentalMaterial3Api::class)
@Composable
@@ -66,7 +74,11 @@ fun HomeScreenBottomSheet(viewModel: SharedVM, handleAction: (UiTronAction?) ->
val bottomSheetStateHolder by viewModel.bottomSheetStateHolder.collectAsStateWithLifecycle()
val modalBottomSheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true)
val modalBottomSheetState =
rememberModalBottomSheetState(skipPartiallyExpanded = true) {
onStateChange(it, viewModel)
bottomSheetStateHolder.config?.isSwipeable ?: true
}
// Hide bottom sheet using UiTronAction UpdateStateHandleActionV2
LaunchedEffect(Unit) {
@@ -79,9 +91,7 @@ fun HomeScreenBottomSheet(viewModel: SharedVM, handleAction: (UiTronAction?) ->
}
}
}
// Callback to handle UiTronActions
LaunchedEffect(Unit) { viewModel.getActionCallback().collect { handleAction(it) } }
HandleUiTronActions(viewModel, handleAction)
LaunchedEffect(key1 = bottomSheetStateHolder.state) {
when (bottomSheetStateHolder.state) {
@@ -145,6 +155,46 @@ fun HomeScreenBottomSheet(viewModel: SharedVM, handleAction: (UiTronAction?) ->
}
}
@Composable
private fun HandleUiTronActions(viewModel: SharedVM, handleAction: (UiTronAction?) -> Unit) {
HandlePublishEventAction(viewModel = viewModel)
// Callback to handle UiTronActions
LaunchedEffect(Unit) { viewModel.getActionCallback().collect { handleAction(it) } }
}
@OptIn(ExperimentalMaterial3Api::class)
fun onStateChange(bottomSheetValue: SheetValue, viewModel: SharedVM) {
when (bottomSheetValue) {
SheetValue.Expanded -> {
viewModel.handleAction(
PublishEventAction(
events =
listOf(
PublishableEventData(
eventName = BOTTOM_SHEET_EXPANDED,
stateKey = EXPANDED_STATE,
)
)
)
)
}
SheetValue.Hidden -> {
viewModel.handleAction(
PublishEventAction(
events =
listOf(
PublishableEventData(
eventName = BOTTOM_SHEET_HIDDEN,
stateKey = HIDDEN_STATE,
)
)
)
)
}
else -> {}
}
}
@Composable
private fun BottomSheetContentRenderer(
config: HpBottomSheetConfig?,

View File

@@ -20,6 +20,7 @@ import com.naviapp.screenOverlay.viewModel.ScreenOverlayVM
fun BottomSheetData.toHpBottomSheetConfig(viewModel: ScreenOverlayVM): HpBottomSheetConfig {
return HpBottomSheetConfig(
isCancellable = bottomSheetConfig?.isCancellable,
isSwipeable = bottomSheetConfig?.isSwipeable,
contentColor = bottomSheetConfig?.contentColor,
scrimColor = bottomSheetConfig?.scrimColor,
onDismiss = {

View File

@@ -268,6 +268,10 @@ object Constants {
const val SCROLL_THRESHOLD = 60f
const val TOP_NAV_ARC_BACKGROUND = "top_nav_arc_background"
const val ALPHA = "alpha_"
const val BOTTOM_SHEET_EXPANDED = "bottom_sheet_expanded"
const val BOTTOM_SHEET_HIDDEN = "bottom_sheet_hidden"
const val EXPANDED_STATE = "expanded_state"
const val HIDDEN_STATE = "hidden_state"
}
// Home Custom Widget Constants