TP-65927 | fix bottom sheet status bar colour (#10760)
This commit is contained in:
committed by
GitHub
parent
66785dde9e
commit
aef3febe1d
@@ -15,7 +15,6 @@ data class APBottomSheetStateHolder(
|
||||
enum class ApBottomSheetState {
|
||||
Visible,
|
||||
Hidden,
|
||||
HidingOnDismissRequest,
|
||||
Collapsing
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,31 +9,32 @@ package com.navi.ap.common.ui
|
||||
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.Spacer
|
||||
import androidx.compose.foundation.layout.WindowInsets
|
||||
import androidx.compose.foundation.layout.height
|
||||
import androidx.compose.foundation.layout.navigationBarsPadding
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.layout.size
|
||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||
import androidx.compose.material3.ModalBottomSheet
|
||||
import androidx.compose.material3.ModalBottomSheetProperties
|
||||
import androidx.compose.material3.SheetState
|
||||
import androidx.compose.material3.rememberModalBottomSheetState
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
import androidx.compose.runtime.collectAsState
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.rememberCoroutineScope
|
||||
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
|
||||
import androidx.compose.ui.window.SecureFlagPolicy
|
||||
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
||||
import com.navi.alfred.AlfredManager
|
||||
import com.navi.ap.common.models.APBottomSheetStateHolder
|
||||
import com.navi.ap.common.models.APBottomSheetStateHolder.ApBottomSheetState
|
||||
import com.navi.ap.common.models.WidgetModelDefinition
|
||||
import com.navi.ap.common.mvi.actions.ApScreenAction
|
||||
import com.navi.ap.common.viewmodel.ApplicationPlatformVM
|
||||
import com.navi.ap.common.widgetfactory.WidgetRenderer
|
||||
@@ -42,11 +43,10 @@ import com.navi.ap.utils.constants.BOTTOM_SHEET_TOP_SPACING
|
||||
import com.navi.ap.utils.constants.BOTTOM_SHEET_VISIBILITY
|
||||
import com.navi.ap.utils.constants.Events
|
||||
import com.navi.ap.utils.constants.WHITE_HEX_CODE
|
||||
import com.navi.base.utils.orFalse
|
||||
import com.navi.base.utils.orTrue
|
||||
import com.navi.common.utils.Constants
|
||||
import com.navi.common.utils.getStatusBarHeight
|
||||
import com.navi.design.utils.parseColorSafe
|
||||
import com.navi.uitron.model.UiTronResponse
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
@@ -86,21 +86,6 @@ fun InitBottomSheet(viewModel: ApplicationPlatformVM, onDismiss: (SheetState) ->
|
||||
viewModel.handleActions(viewModel.handle[it])
|
||||
}
|
||||
}
|
||||
ApBottomSheetState.HidingOnDismissRequest -> {
|
||||
if (bottomSheetStateHolder.bottomSheetUIContent?.isCancellable.orFalse().not()) {
|
||||
viewModel.handleIntent(
|
||||
ApScreenAction.UpdateBottomSheetUi(
|
||||
bottomSheetState = ApBottomSheetState.Visible
|
||||
)
|
||||
)
|
||||
} else {
|
||||
viewModel.handleIntent(
|
||||
ApScreenAction.UpdateBottomSheetUi(
|
||||
bottomSheetState = ApBottomSheetState.Hidden
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
ApBottomSheetState.Collapsing -> {}
|
||||
}
|
||||
}
|
||||
@@ -118,15 +103,13 @@ private fun APModalBottomSheet(
|
||||
bottomSheetStateHolder: APBottomSheetStateHolder,
|
||||
onDismiss: (SheetState) -> Unit
|
||||
) {
|
||||
val statusBarHeight = remember { getStatusBarHeight() }
|
||||
val statusBarHeight = with(LocalDensity.current) { getStatusBarHeight().toDp() }
|
||||
val screenHeightInDp = LocalConfiguration.current.screenHeightDp.dp
|
||||
ModalBottomSheet(
|
||||
onDismissRequest = {
|
||||
onDismiss(modalBottomSheetState)
|
||||
viewModel.handleIntent(
|
||||
ApScreenAction.UpdateBottomSheetUi(
|
||||
bottomSheetState = ApBottomSheetState.HidingOnDismissRequest
|
||||
)
|
||||
ApScreenAction.UpdateBottomSheetUi(bottomSheetState = ApBottomSheetState.Hidden)
|
||||
)
|
||||
},
|
||||
shape =
|
||||
@@ -142,26 +125,28 @@ private fun APModalBottomSheet(
|
||||
.parseColorSafe(WHITE_HEX_CODE)
|
||||
),
|
||||
sheetState = modalBottomSheetState,
|
||||
windowInsets = WindowInsets(top = statusBarHeight),
|
||||
dragHandle = { Spacer(modifier = Modifier.size(BOTTOM_SHEET_TOP_SPACING)) }
|
||||
dragHandle = { Spacer(modifier = Modifier.size(BOTTOM_SHEET_TOP_SPACING)) },
|
||||
modifier = Modifier.padding(top = statusBarHeight),
|
||||
properties =
|
||||
ModalBottomSheetProperties(
|
||||
shouldDismissOnBackPress =
|
||||
bottomSheetStateHolder.bottomSheetUIContent?.isCancellable.orTrue(),
|
||||
isFocusable = true,
|
||||
securePolicy = SecureFlagPolicy.Inherit
|
||||
),
|
||||
) {
|
||||
AlfredManager.setBottomSheetView(LocalView.current.rootView)
|
||||
bottomSheetStateHolder.bottomSheetUIContent?.screenHeightOffset?.let {
|
||||
Column(Modifier.height(screenHeightInDp - it.dp).navigationBarsPadding()) {
|
||||
BottomSheetContentRenderer(
|
||||
widgetsList = bottomSheetStateHolder.bottomSheetUIContent.content?.widgets,
|
||||
viewModel = viewModel
|
||||
)
|
||||
|
||||
val bottomSheetContentModifier =
|
||||
bottomSheetStateHolder.bottomSheetUIContent?.screenHeightOffset?.let {
|
||||
Modifier.height(screenHeightInDp - it.dp + statusBarHeight).navigationBarsPadding()
|
||||
} ?: Modifier.navigationBarsPadding()
|
||||
|
||||
Column(bottomSheetContentModifier) {
|
||||
bottomSheetStateHolder.bottomSheetUIContent?.content?.widgets?.forEach {
|
||||
WidgetRenderer(it, viewModel)
|
||||
}
|
||||
}
|
||||
?: run {
|
||||
Column(Modifier.navigationBarsPadding()) {
|
||||
BottomSheetContentRenderer(
|
||||
widgetsList = bottomSheetStateHolder.bottomSheetUIContent?.content?.widgets,
|
||||
viewModel = viewModel
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -201,12 +186,3 @@ private fun ObserveBottomSheetVisibilityState(
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
private fun BottomSheetContentRenderer(
|
||||
widgetsList: List<WidgetModelDefinition<UiTronResponse>>?,
|
||||
viewModel: ApplicationPlatformVM?
|
||||
) {
|
||||
if (viewModel == null) return
|
||||
widgetsList?.forEach { WidgetRenderer(it, viewModel) }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user