diff --git a/android/app/src/main/java/com/naviapp/home/compose/home/utils/CtaActionHandler.kt b/android/app/src/main/java/com/naviapp/home/compose/home/utils/CtaActionHandler.kt index a8c37013c8..d829808304 100644 --- a/android/app/src/main/java/com/naviapp/home/compose/home/utils/CtaActionHandler.kt +++ b/android/app/src/main/java/com/naviapp/home/compose/home/utils/CtaActionHandler.kt @@ -11,6 +11,7 @@ import com.navi.common.utils.TemporaryStorageHelper import com.naviapp.home.compose.activity.HomePageActivity import com.naviapp.home.compose.listener.HomeScreenCallbackListener import com.naviapp.home.compose.model.CtaActionEvent +import com.naviapp.home.model.HpBottomSheetConfig import com.naviapp.home.model.HpBottomSheetContent import com.naviapp.home.model.HpBottomSheetRenderType import com.naviapp.home.model.HpBottomSheetState @@ -50,6 +51,13 @@ fun handleCtaAction( HpBottomSheetContent( renderType = HpBottomSheetRenderType.UI_TRON, uiTronContent = it.content?.widgets + ), + config = + HpBottomSheetConfig( + isCancellable = it.isCancellable, + bottomSheetPercentageHeight = it.bottomSheetPercentageHeight, + uiStrategy = it.uiStrategy, + onDismiss = { homeVM.handleActions(it.onDismissAction) } ) ) } diff --git a/android/app/src/main/java/com/naviapp/home/model/HpBottomSheetStateHolder.kt b/android/app/src/main/java/com/naviapp/home/model/HpBottomSheetStateHolder.kt index 4166ab61f0..e84f8303a7 100644 --- a/android/app/src/main/java/com/naviapp/home/model/HpBottomSheetStateHolder.kt +++ b/android/app/src/main/java/com/naviapp/home/model/HpBottomSheetStateHolder.kt @@ -13,6 +13,7 @@ import androidx.compose.runtime.MutableState import androidx.compose.runtime.Stable import com.navi.base.model.ActionData import com.navi.base.model.CtaData +import com.navi.common.alchemist.model.AlchemistBottomSheetStructure import com.navi.common.alchemist.model.AlchemistWidgetModelDefinition import com.navi.naviwidgets.models.FooterButtonState import com.navi.uitron.model.UiTronResponse @@ -38,7 +39,9 @@ open class HpBottomSheetConfig( val contentColor: String? = null, val scrimColor: String? = null, val onDismiss: () -> Unit = {}, - val onVisible: () -> Unit = {} + val onVisible: () -> Unit = {}, + val uiStrategy: AlchemistBottomSheetStructure.UiStrategy? = null, + val bottomSheetPercentageHeight: Float? = null ) @Stable diff --git a/android/app/src/main/java/com/naviapp/screenOverlay/bottomsheet/ui/HomeScreenBottomSheet.kt b/android/app/src/main/java/com/naviapp/screenOverlay/bottomsheet/ui/HomeScreenBottomSheet.kt index b76b1e2478..74d0b7abb4 100644 --- a/android/app/src/main/java/com/naviapp/screenOverlay/bottomsheet/ui/HomeScreenBottomSheet.kt +++ b/android/app/src/main/java/com/naviapp/screenOverlay/bottomsheet/ui/HomeScreenBottomSheet.kt @@ -10,6 +10,7 @@ package com.naviapp.screenOverlay.bottomsheet.ui import BottomSheetData import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.WindowInsets +import androidx.compose.foundation.layout.heightIn import androidx.compose.foundation.layout.navigationBarsPadding import androidx.compose.foundation.layout.padding import androidx.compose.foundation.shape.RoundedCornerShape @@ -23,6 +24,7 @@ import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color +import androidx.compose.ui.platform.LocalConfiguration import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.platform.LocalView import androidx.compose.ui.unit.dp @@ -32,6 +34,7 @@ import com.navi.alfred.AlfredManager import com.navi.ap.utils.constants.BOTTOM_SHEET_VISIBILITY import com.navi.base.model.CtaData import com.navi.base.utils.orTrue +import com.navi.common.alchemist.model.AlchemistBottomSheetStructure import com.navi.common.uitron.model.action.CtaAction import com.navi.common.uitron.render.CommonCustomUiTronRenderer import com.navi.common.utils.CommonNaviAnalytics @@ -93,6 +96,23 @@ fun HomeScreenBottomSheet(viewModel: SharedVM, handleAction: (UiTronAction?) -> if (bottomSheetStateHolder.state != HpBottomSheetState.Hidden) { bottomSheetStateHolder.let { + val modifier: Modifier = + when (it.config?.uiStrategy?.name) { + AlchemistBottomSheetStructure.UiStrategy.FIX_PERCENTAGE_HEIGHT.name -> { + Modifier.heightIn( + min = 0.dp, + max = + LocalConfiguration.current.screenHeightDp.dp * + (it.config.bottomSheetPercentageHeight ?: 0.5f) + ) + } + AlchemistBottomSheetStructure.UiStrategy.DEFAULT.name -> { + Modifier + } + else -> { + Modifier + } + } val statusBarHeight = with(LocalDensity.current) { getStatusBarHeight().toDp() } ModalBottomSheet( onDismissRequest = { @@ -114,7 +134,7 @@ fun HomeScreenBottomSheet(viewModel: SharedVM, handleAction: (UiTronAction?) -> contentWindowInsets = { WindowInsets(0, 0, 0, 0) } ) { AlfredManager.setBottomSheetView(LocalView.current.rootView) - Column(modifier = Modifier.navigationBarsPadding()) { + Column(modifier = modifier.navigationBarsPadding()) { BottomSheetContentRenderer(it.config, it.content, viewModel) } }