Updated on 2026-08-14

This commit is contained in:
Tangem 2023-12-11 17:51:03 +03:00
parent 6844163be4
commit de5bb054fa
4 changed files with 18 additions and 29 deletions

View file

@ -1,13 +1,10 @@
package com.tangem.core.ui.components
import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.exclude
import androidx.compose.foundation.layout.ime
import androidx.compose.foundation.layout.navigationBars
import androidx.compose.runtime.Composable
import androidx.compose.runtime.State
import androidx.compose.runtime.derivedStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberUpdatedState
import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
@ -25,23 +22,9 @@ sealed interface Keyboard {
/**
* Allows to subscribe to a soft keyboard to detect when it's open/closed
*/
@Deprecated("Use Modifier.imePadding() on pure Compose screens (without XML layouts)")
@Composable
fun keyboardAsState(): State<Keyboard> {
val density = LocalDensity.current
val imeInsets = WindowInsets.ime
.exclude(WindowInsets.navigationBars)
.getBottom(density)
return remember(imeInsets) {
derivedStateOf {
if (imeInsets > 0) {
Keyboard.Opened(
height = with(density) { imeInsets.toDp() },
)
} else {
Keyboard.Closed
}
}
}
val bottom = WindowInsets.ime.getBottom(LocalDensity.current)
val isImeVisible = bottom > 0
return rememberUpdatedState(if (isImeVisible) Keyboard.Opened(bottom.dp) else Keyboard.Closed)
}

View file

@ -2,21 +2,33 @@ package com.tangem.feature.swap.ui
import androidx.activity.compose.BackHandler
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.systemBarsPadding
import androidx.compose.material.*
import androidx.compose.material3.*
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import com.tangem.core.ui.components.appbar.AppBarWithBackButton
import com.tangem.core.ui.res.TangemTheme
import com.tangem.feature.swap.models.SwapStateHolder
import com.tangem.feature.swap.models.states.ChooseFeeBottomSheetConfig
import com.tangem.feature.swap.models.states.ChooseProviderBottomSheetConfig
import com.tangem.feature.swap.models.states.GivePermissionBottomSheetConfig
import com.tangem.feature.swap.presentation.R
@Composable
internal fun SwapScreen(stateHolder: SwapStateHolder) {
BackHandler(onBack = stateHolder.onBackClicked)
Scaffold(
modifier = Modifier.systemBarsPadding(),
topBar = {
AppBarWithBackButton(
text = stringResource(R.string.common_swap),
onBackClick = stateHolder.onBackClicked,
iconRes = R.drawable.ic_close_24,
)
},
containerColor = TangemTheme.colors.background.secondary,
) { scaffoldPaddings ->

View file

@ -17,7 +17,6 @@ import androidx.compose.ui.tooling.preview.Preview
import androidx.constraintlayout.compose.ConstraintLayout
import com.tangem.common.Strings.STARS
import com.tangem.core.ui.components.*
import com.tangem.core.ui.components.appbar.AppBarWithBackButton
import com.tangem.core.ui.components.notifications.Notification
import com.tangem.core.ui.components.notifications.NotificationConfig
import com.tangem.core.ui.extensions.getActiveIconResByCoinId
@ -40,12 +39,6 @@ internal fun SwapScreenContent(state: SwapStateHolder, modifier: Modifier = Modi
.background(color = TangemTheme.colors.background.secondary),
) {
Column {
AppBarWithBackButton(
text = stringResource(R.string.common_swap),
onBackClick = state.onBackClicked,
iconRes = R.drawable.ic_close_24,
)
Column(
modifier = Modifier
.fillMaxWidth()

View file

@ -97,7 +97,8 @@ private fun ListOfTokens(state: SwapSelectTokenStateHolder, modifier: Modifier =
LazyColumn(
modifier = modifier
.background(color = screenBackgroundColor)
.fillMaxSize(),
.fillMaxSize()
.imePadding(),
horizontalAlignment = Alignment.CenterHorizontally,
) {
item { SpacerH8() }