From 955719a33b6abd474d047a2cc8c94f6b4b52419a Mon Sep 17 00:00:00 2001 From: Tangem Date: Thu, 25 Aug 2022 10:02:08 +0400 Subject: [PATCH 1/3] Updated on 2026-08-14 --- .../ui/cardsettings/CardSettingsScreen.kt | 29 ++++++++++--------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/features/details/ui/cardsettings/CardSettingsScreen.kt b/app/src/main/java/com/tangem/tap/features/details/ui/cardsettings/CardSettingsScreen.kt index 92eec4c59b..2de4f118fb 100644 --- a/app/src/main/java/com/tangem/tap/features/details/ui/cardsettings/CardSettingsScreen.kt +++ b/app/src/main/java/com/tangem/tap/features/details/ui/cardsettings/CardSettingsScreen.kt @@ -2,7 +2,6 @@ package com.tangem.tap.features.details.ui.cardsettings import androidx.compose.foundation.Image import androidx.compose.foundation.clickable -import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer @@ -10,6 +9,10 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.verticalScroll import androidx.compose.material.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier @@ -51,14 +54,12 @@ fun CardSettingsReadCard( Column( modifier = modifier .fillMaxSize(), - verticalArrangement = Arrangement.SpaceBetween, ) { - Box( modifier = modifier - .fillMaxWidth(), - - ) { + .fillMaxWidth() + .padding(bottom = 40.dp), + ) { Image( modifier = modifier .fillMaxWidth() @@ -77,16 +78,13 @@ fun CardSettingsReadCard( contentDescription = "", contentScale = ContentScale.FillWidth, ) - } - - + Spacer(modifier = Modifier.weight(1f)) Column( modifier = modifier .fillMaxWidth() .padding(start = 16.dp, end = 16.dp, bottom = 32.dp), ) { - Text( text = stringResource(id = R.string.scan_card_settings_title), color = colorResource(id = R.color.text_primary_1), @@ -97,6 +95,9 @@ fun CardSettingsReadCard( text = stringResource(id = R.string.scan_card_settings_message), color = colorResource(id = R.color.text_secondary), style = TangemTypography.body1, + modifier = modifier + .verticalScroll(rememberScrollState()) + .weight(weight = 1f, fill = false), ) Spacer(modifier = modifier.size(29.dp)) DetailsMainButton( @@ -113,11 +114,13 @@ fun CardSettings( state: CardSettingsScreenState, modifier: Modifier = Modifier, ) { - Column( + if (state.cardDetails == null) return + + LazyColumn( modifier = modifier .fillMaxWidth(), ) { - state.cardDetails?.map { + items(state.cardDetails) { val paddingBottom = when (it) { is CardInfo.CardId, is CardInfo.Issuer -> 12.dp is CardInfo.SignedHashes -> 14.dp @@ -156,9 +159,7 @@ fun CardSettings( style = TangemTypography.body2, ) } - } - } } From 806bf97028552305cd0cb070b88f60685da328a6 Mon Sep 17 00:00:00 2001 From: Tangem Date: Thu, 25 Aug 2022 15:31:05 +0400 Subject: [PATCH 2/3] Updated on 2026-08-14 --- .../details/ui/resetcard/ResetCardScreen.kt | 149 ++++++++++-------- .../ui/securitymode/SecurityModeScreen.kt | 13 +- 2 files changed, 95 insertions(+), 67 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/features/details/ui/resetcard/ResetCardScreen.kt b/app/src/main/java/com/tangem/tap/features/details/ui/resetcard/ResetCardScreen.kt index 2c07b092ad..58d20cf256 100644 --- a/app/src/main/java/com/tangem/tap/features/details/ui/resetcard/ResetCardScreen.kt +++ b/app/src/main/java/com/tangem/tap/features/details/ui/resetcard/ResetCardScreen.kt @@ -5,20 +5,24 @@ import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.IntrinsicSize import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.defaultMinSize import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.offset import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.verticalScroll import androidx.compose.material.Icon import androidx.compose.material.IconToggleButton import androidx.compose.material.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color +import androidx.compose.ui.layout.layout import androidx.compose.ui.res.colorResource import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource @@ -58,80 +62,99 @@ fun ResetCardView( Column( modifier = modifier .fillMaxSize(), - verticalArrangement = Arrangement.Bottom, + verticalArrangement = Arrangement.SpaceBetween, ) { Box( - modifier = modifier, + modifier = modifier + .padding(bottom = 20.dp), ) { ScreenTitle(titleRes = R.string.reset_card_to_factory_navigation_title) } - Spacer( + + Column( modifier = modifier - .defaultMinSize(20.dp) - .weight(1f), - ) - Text( - text = stringResource(id = R.string.common_attention), - modifier = modifier.padding(start = 20.dp, end = 20.dp), - style = TangemTypography.headline3, - color = colorResource(id = R.color.text_primary_1), - ) - - Spacer(modifier = modifier.size(24.dp)) - - Text( - text = stringResource(id = R.string.reset_card_to_factory_message), - modifier = modifier.padding(start = 20.dp, end = 20.dp), - style = TangemTypography.body1, - color = colorResource(id = R.color.text_secondary), - ) - - Spacer(modifier = modifier.size(44.dp)) - Row( - modifier = modifier - .fillMaxWidth() - .padding(end = 20.dp), + .layout { measurable, constraints -> + val placeable = + measurable.measure( + constraints.copy( + // left 200.dp for min image height + maxHeight = constraints.maxHeight - 215.dp.roundToPx(), + // occupy all height except full image square in case of smaller text + minHeight = constraints.maxHeight - constraints.maxWidth, + ), + ) + layout(placeable.width, placeable.height) { + placeable.place(0, 0) + } + } + .height(IntrinsicSize.Min), + verticalArrangement = Arrangement.Bottom, ) { - IconToggleButton( - checked = state.accepted, - onCheckedChange = state.onAcceptWarningToggleClick, - modifier = modifier.padding(start = 20.dp, end = 20.dp), - ) { - Icon( - painter = painterResource( - if (state.accepted) { - R.drawable.ic_accepted - } else { - R.drawable.ic_unticked - }, - ), - contentDescription = null, - tint = if (state.accepted) { - colorResource(id = R.color.icon_accent) - } else { - colorResource(id = R.color.icon_secondary) - }, - ) - } Text( - text = stringResource(id = R.string.reset_card_to_factory_warning_message), - style = TangemTypography.body2, + text = stringResource(id = R.string.common_attention), + modifier = modifier.padding(start = 20.dp, end = 20.dp), + style = TangemTypography.headline3, + color = colorResource(id = R.color.text_primary_1), + ) + + Spacer(modifier = modifier.size(24.dp)) + + Text( + text = stringResource(id = R.string.reset_card_to_factory_message), + modifier = modifier + .padding(start = 20.dp, end = 20.dp) + .weight(1f, false) + .verticalScroll(rememberScrollState()), + style = TangemTypography.body1, color = colorResource(id = R.color.text_secondary), ) - } - Spacer(modifier = modifier.size(32.dp)) - Box( - modifier = modifier - .padding(start = 16.dp, end = 16.dp, bottom = 32.dp), - ) { - DetailsMainButton( - title = stringResource(id = R.string.reset_card_to_factory_button_title), - onClick = state.onResetButtonClick, - enabled = state.resetButtonEnabled, - ) - } + Spacer(modifier = modifier.size(44.dp)) + Row( + modifier = modifier + .fillMaxWidth() + .padding(end = 20.dp), + ) { + IconToggleButton( + checked = state.accepted, + onCheckedChange = state.onAcceptWarningToggleClick, + modifier = modifier.padding(start = 20.dp, end = 20.dp), + ) { + Icon( + painter = painterResource( + if (state.accepted) { + R.drawable.ic_accepted + } else { + R.drawable.ic_unticked + }, + ), + contentDescription = null, + tint = if (state.accepted) { + colorResource(id = R.color.icon_accent) + } else { + colorResource(id = R.color.icon_secondary) + }, + ) + } + Text( + text = stringResource(id = R.string.reset_card_to_factory_warning_message), + style = TangemTypography.body2, + color = colorResource(id = R.color.text_secondary), + ) + } + Spacer(modifier = modifier.size(32.dp)) + Box( + modifier = modifier + .padding(start = 16.dp, end = 16.dp, bottom = 32.dp), + ) { + DetailsMainButton( + title = stringResource(id = R.string.reset_card_to_factory_button_title), + onClick = state.onResetButtonClick, + enabled = state.resetButtonEnabled, + ) + } + } } } diff --git a/app/src/main/java/com/tangem/tap/features/details/ui/securitymode/SecurityModeScreen.kt b/app/src/main/java/com/tangem/tap/features/details/ui/securitymode/SecurityModeScreen.kt index e18146767f..66f6adcab7 100644 --- a/app/src/main/java/com/tangem/tap/features/details/ui/securitymode/SecurityModeScreen.kt +++ b/app/src/main/java/com/tangem/tap/features/details/ui/securitymode/SecurityModeScreen.kt @@ -6,10 +6,11 @@ import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.offset import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size +import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.selection.selectable +import androidx.compose.foundation.verticalScroll import androidx.compose.material.RadioButton import androidx.compose.material.RadioButtonDefaults import androidx.compose.material.Text @@ -22,6 +23,7 @@ import androidx.compose.ui.unit.dp import com.tangem.tap.common.compose.TangemTypography 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.ScreenTitle import com.tangem.tap.features.details.ui.common.SettingsScreensScaffold import com.tangem.wallet.R @@ -33,7 +35,7 @@ fun SecurityModeScreen( ) { SettingsScreensScaffold( content = { SecurityModeOptions(state = state, modifier = modifier) }, - titleRes = R.string.card_settings_security_mode, + // titleRes = R.string.card_settings_security_mode, onBackClick = onBackPressed, ) } @@ -47,10 +49,13 @@ fun SecurityModeOptions( Column( modifier = modifier .fillMaxSize() - .padding(bottom = 28.dp) - .offset(y = (-16).dp), + .verticalScroll(rememberScrollState()) + .padding(bottom = 28.dp), verticalArrangement = Arrangement.SpaceBetween, ) { + ScreenTitle(titleRes = R.string.card_settings_security_mode, modifier.padding(bottom = 36.dp)) + + state.availableOptions.map { SecurityOption(option = it, state = state, modifier = modifier) } From 829143605020e08eedde1dde9c1f86bb336bd4ec Mon Sep 17 00:00:00 2001 From: Tangem Date: Fri, 26 Aug 2022 11:02:06 +0400 Subject: [PATCH 3/3] Updated on 2026-08-14 --- .../tangem/wallet/ExampleInstrumentedTest.kt | 24 ---------- .../details/ui/resetcard/ResetCardScreen.kt | 48 ++++++------------- 2 files changed, 14 insertions(+), 58 deletions(-) delete mode 100644 app/src/androidTest/java/com/tangem/wallet/ExampleInstrumentedTest.kt diff --git a/app/src/androidTest/java/com/tangem/wallet/ExampleInstrumentedTest.kt b/app/src/androidTest/java/com/tangem/wallet/ExampleInstrumentedTest.kt deleted file mode 100644 index 9a7a795e39..0000000000 --- a/app/src/androidTest/java/com/tangem/wallet/ExampleInstrumentedTest.kt +++ /dev/null @@ -1,24 +0,0 @@ -package com.tangem.wallet - -import android.support.test.InstrumentationRegistry -import android.support.test.runner.AndroidJUnit4 - -import org.junit.Test -import org.junit.runner.RunWith - -import org.junit.Assert.* - -/** - * Instrumented test, which will execute on an Android device. - * - * See [testing documentation](http://d.android.com/tools/testing). - */ -@RunWith(AndroidJUnit4::class) -class ExampleInstrumentedTest { - @Test - fun useAppContext() { - // Context of the app under test. - val appContext = InstrumentationRegistry.getTargetContext() - assertEquals("com.tangem.wallet", appContext.packageName) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/features/details/ui/resetcard/ResetCardScreen.kt b/app/src/main/java/com/tangem/tap/features/details/ui/resetcard/ResetCardScreen.kt index 58d20cf256..eda5e31bcc 100644 --- a/app/src/main/java/com/tangem/tap/features/details/ui/resetcard/ResetCardScreen.kt +++ b/app/src/main/java/com/tangem/tap/features/details/ui/resetcard/ResetCardScreen.kt @@ -1,16 +1,13 @@ package com.tangem.tap.features.details.ui.resetcard import androidx.compose.foundation.Image -import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.IntrinsicSize import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.offset import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size @@ -22,7 +19,6 @@ import androidx.compose.material.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color -import androidx.compose.ui.layout.layout import androidx.compose.ui.res.colorResource import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource @@ -40,18 +36,11 @@ fun ResetCardScreen( onBackPressed: () -> Unit, modifier: Modifier = Modifier, ) { - Box(modifier = modifier.background(colorResource(id = R.color.background_primary))) { - Image( - painter = painterResource(id = R.drawable.ic_reset_background), - contentDescription = "", - modifier = modifier.offset(y = (-16).dp), - ) SettingsScreensScaffold( content = { ResetCardView(state = state, modifier = modifier) }, onBackClick = onBackPressed, backgroundColor = Color.Transparent, ) - } } @Composable @@ -61,33 +50,26 @@ fun ResetCardView( ) { Column( modifier = modifier - .fillMaxSize(), + .fillMaxSize() + .verticalScroll(rememberScrollState()), verticalArrangement = Arrangement.SpaceBetween, ) { Box( - modifier = modifier - .padding(bottom = 20.dp), + modifier = modifier, ) { + Image( + painter = painterResource(id = R.drawable.ic_reset_background), + contentDescription = "", + modifier = modifier.offset(y = (-82).dp), + ) ScreenTitle(titleRes = R.string.reset_card_to_factory_navigation_title) } - + Spacer( + modifier = modifier.weight(1f), + ) Column( modifier = modifier - .layout { measurable, constraints -> - val placeable = - measurable.measure( - constraints.copy( - // left 200.dp for min image height - maxHeight = constraints.maxHeight - 215.dp.roundToPx(), - // occupy all height except full image square in case of smaller text - minHeight = constraints.maxHeight - constraints.maxWidth, - ), - ) - layout(placeable.width, placeable.height) { - placeable.place(0, 0) - } - } - .height(IntrinsicSize.Min), + .offset(y = (-32).dp), verticalArrangement = Arrangement.Bottom, ) { Text( @@ -102,9 +84,7 @@ fun ResetCardView( Text( text = stringResource(id = R.string.reset_card_to_factory_message), modifier = modifier - .padding(start = 20.dp, end = 20.dp) - .weight(1f, false) - .verticalScroll(rememberScrollState()), + .padding(start = 20.dp, end = 20.dp), style = TangemTypography.body1, color = colorResource(id = R.color.text_secondary), ) @@ -146,7 +126,7 @@ fun ResetCardView( Spacer(modifier = modifier.size(32.dp)) Box( modifier = modifier - .padding(start = 16.dp, end = 16.dp, bottom = 32.dp), + .padding(start = 16.dp, end = 16.dp), ) { DetailsMainButton( title = stringResource(id = R.string.reset_card_to_factory_button_title),