Updated on 2026-08-14

This commit is contained in:
Tangem 2026-05-29 14:00:48 +02:00
parent 1b706b20a7
commit a121268ce0
30 changed files with 685 additions and 9 deletions

View file

@ -17,6 +17,7 @@ import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.focus.focusRequester
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter
@ -29,6 +30,7 @@ import com.tangem.core.ui.event.consumedEvent
import com.tangem.core.ui.extensions.stringResourceSafe
import com.tangem.core.ui.res.TangemTheme
import com.tangem.core.ui.res.TangemThemePreview
import com.tangem.core.ui.test.AppCurrencySelectorScreenTestTags
import com.tangem.tap.features.details.ui.appcurrency.AppCurrencySelectorState.Currency
import com.tangem.wallet.R
import kotlinx.collections.immutable.ImmutableList
@ -123,7 +125,9 @@ private fun TopBar(
when (state) {
is AppCurrencySelectorState.Content -> {
IconButton(
modifier = Modifier.size(TangemTheme.dimens.size32),
modifier = Modifier
.size(TangemTheme.dimens.size32)
.testTag(AppCurrencySelectorScreenTestTags.TOP_BAR_ACTION_BUTTON),
onClick = state.onTopBarActionClick,
) {
val iconResId = when (state) {
@ -157,7 +161,8 @@ private fun SearchBar(onInputChange: (String) -> Unit, modifier: Modifier = Modi
TextField(
modifier = modifier
.focusRequester(focusRequester),
.focusRequester(focusRequester)
.testTag(AppCurrencySelectorScreenTestTags.SEARCH_FIELD),
value = input,
onValueChange = { input = it },
singleLine = true,
@ -218,7 +223,7 @@ private fun CurrenciesList(
) {
val bottomBarHeight = with(LocalDensity.current) { WindowInsets.systemBars.getBottom(this).toDp() }
LazyColumn(
modifier = modifier,
modifier = modifier.testTag(AppCurrencySelectorScreenTestTags.LAZY_LIST),
state = listState,
contentPadding = PaddingValues(bottom = bottomBarHeight),
) {
@ -246,6 +251,7 @@ private fun CurrencyItem(name: String, isSelected: Boolean, onClick: () -> Unit,
Row(
modifier = modifier
.testTag(AppCurrencySelectorScreenTestTags.CURRENCY_ITEM)
.clickable(
interactionSource = interactionSource,
indication = LocalIndication.current,

View file

@ -10,6 +10,7 @@ import androidx.compose.foundation.lazy.items
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.tooling.preview.datasource.CollectionPreviewParameterProvider
@ -55,7 +56,9 @@ private fun AppSettings(state: AppSettingsScreenState.Content) {
item = item,
)
is Item.Button -> SettingsButtonItem(
modifier = Modifier.padding(vertical = TangemTheme.dimens.spacing8),
modifier = Modifier
.padding(vertical = TangemTheme.dimens.spacing8)
.testTag(item.id),
item = item,
)
is Item.Switch -> SettingsSwitchItem(

View file

@ -125,7 +125,7 @@ private fun ScanCardContent(onScanCardClick: () -> Unit) {
}
}
@Suppress("ComplexMethod")
@Suppress("ComplexMethod", "LongMethod")
@Composable
private fun CardSettings(state: CardSettingsScreenState) {
if (state.cardDetails == null) return
@ -156,6 +156,13 @@ private fun CardSettings(state: CardSettingsScreenState) {
Column(
modifier = Modifier
.fillMaxWidth()
.then(
if (cardInfo is CardInfo.SecurityMode) {
Modifier.testTag(DeviceSettingsScreenTestTags.SECURITY_MODE_ROW)
} else {
Modifier
},
)
.clickable(
enabled = cardInfo.isClickable,
onClick = { state.onElementClick(cardInfo) },

View file

@ -5,9 +5,11 @@ import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.tangem.core.ui.extensions.stringResourceSafe
import com.tangem.core.ui.test.SecurityModeScreenTestTags
import com.tangem.tap.features.details.redux.SecurityOption
import com.tangem.tap.features.details.ui.common.DetailsMainButton
import com.tangem.tap.features.details.ui.common.DetailsRadioButtonElement
@ -35,7 +37,8 @@ private fun SecurityModeOptions(state: SecurityModeScreenState) {
modifier = Modifier
.fillMaxSize()
.verticalScroll(rememberScrollState())
.padding(bottom = 28.dp),
.padding(bottom = 28.dp)
.testTag(SecurityModeScreenTestTags.SCREEN_CONTAINER),
verticalArrangement = Arrangement.SpaceBetween,
) {
ScreenTitle(titleRes = R.string.card_settings_security_mode, Modifier.padding(bottom = 36.dp))