|
|
|
|
@@ -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?,
|
|
|
|
|
|