diff --git a/app/src/main/java/com/tangem/tap/features/details/redux/DetailsReducer.kt b/app/src/main/java/com/tangem/tap/features/details/redux/DetailsReducer.kt index 593f31d21f..805d31f8c9 100644 --- a/app/src/main/java/com/tangem/tap/features/details/redux/DetailsReducer.kt +++ b/app/src/main/java/com/tangem/tap/features/details/redux/DetailsReducer.kt @@ -144,23 +144,8 @@ private fun handleSecurityAction( allowedOptions = EnumSet.noneOf(SecurityOption::class.java) )) } - val prohibitDefaultPin = state.card.settingsMask?.contains(Settings.ProhibitDefaultPIN1) == true - val allowSetPin1 = state.card.settingsMask?.contains(Settings.AllowSetPIN1) != false - val allowSetPin2 = state.card.settingsMask?.contains(Settings.AllowSetPIN2) != false - val isDefaultPin1 = state.card.isPin1Default != false - val isDefaultPin2 = state.card.isPin2Default != false - - val allowedSecurityOptions = EnumSet.noneOf(SecurityOption::class.java) - if ((isDefaultPin1 && isDefaultPin2) || !prohibitDefaultPin) { - allowedSecurityOptions.add(SecurityOption.LongTap) - } - if (allowSetPin1 && (isDefaultPin2 || !prohibitDefaultPin)) { - allowedSecurityOptions.add(SecurityOption.AccessCode) - } - if (allowSetPin2 && (isDefaultPin1 || !prohibitDefaultPin)) { - allowedSecurityOptions.add(SecurityOption.PassCode) - } + val allowedSecurityOptions = prepareAllowedSecurityOptions(state.card) state.copy(securityScreenState = state.securityScreenState?.copy( allowedOptions = allowedSecurityOptions, selectedOption = state.securityScreenState.currentOption @@ -180,15 +165,37 @@ private fun handleSecurityAction( state.copy(confirmScreenState = confirmScreenState) } is DetailsAction.ManageSecurity.SaveChanges.Success -> { - state.copy(securityScreenState = state.securityScreenState?.copy( - currentOption = state.securityScreenState.selectedOption - )) + // Setting options to show only LongTap from now on + state.copy( + card = state.card?.copy(isPin1Default = true, isPin2Default = true), + securityScreenState = state.securityScreenState?.copy( + currentOption = state.securityScreenState.selectedOption, + allowedOptions = EnumSet.of(SecurityOption.LongTap) + )) } else -> state } } +private fun prepareAllowedSecurityOptions(card: Card): EnumSet { + val prohibitDefaultPin = card.settingsMask?.contains(Settings.ProhibitDefaultPIN1) == true + val isDefaultPin1 = card.isPin1Default != false + val isDefaultPin2 = card.isPin2Default != false + + val allowedSecurityOptions = EnumSet.noneOf(SecurityOption::class.java) + if ((isDefaultPin1 && isDefaultPin2) || !prohibitDefaultPin) { + allowedSecurityOptions.add(SecurityOption.LongTap) + } + if (!isDefaultPin1) { + allowedSecurityOptions.add(SecurityOption.AccessCode) + } + if (!isDefaultPin2) { + allowedSecurityOptions.add(SecurityOption.PassCode) + } + return allowedSecurityOptions +} + private fun Card.toCardInfo(): CardInfo? { val cardId = this.cardId.chunked(4).joinToString(separator = " ") diff --git a/app/src/main/java/com/tangem/tap/features/details/ui/DetailsSecurityFragment.kt b/app/src/main/java/com/tangem/tap/features/details/ui/DetailsSecurityFragment.kt index caa822e069..fe017dfec7 100644 --- a/app/src/main/java/com/tangem/tap/features/details/ui/DetailsSecurityFragment.kt +++ b/app/src/main/java/com/tangem/tap/features/details/ui/DetailsSecurityFragment.kt @@ -5,6 +5,7 @@ import android.view.View import androidx.activity.OnBackPressedCallback import androidx.fragment.app.Fragment import androidx.transition.TransitionInflater +import com.tangem.tap.common.extensions.show import com.tangem.tap.common.redux.navigation.NavigationAction import com.tangem.tap.features.details.redux.DetailsAction import com.tangem.tap.features.details.redux.DetailsState @@ -91,6 +92,7 @@ class DetailsSecurityFragment : Fragment(R.layout.fragment_details_security), } private fun enableLongTap(enable: Boolean) { + group_long_tap.show(enable) val alpha = if (enable) 1f else 0.5f tv_long_tap_description.alpha = alpha tv_long_tap_title.alpha = alpha @@ -105,6 +107,7 @@ class DetailsSecurityFragment : Fragment(R.layout.fragment_details_security), } private fun enablePasscode(enable: Boolean) { + group_passcode.show(enable) val alpha = if (enable) 1f else 0.5f tv_passcode_description.alpha = alpha tv_passcode_title.alpha = alpha @@ -119,6 +122,7 @@ class DetailsSecurityFragment : Fragment(R.layout.fragment_details_security), } private fun enableAccessCode(enable: Boolean) { + group_access_code.show(enable) val alpha = if (enable) 1f else 0.5f tv_access_code_description.alpha = alpha tv_access_code_title.alpha = alpha diff --git a/app/src/main/res/layout/fragment_details_security.xml b/app/src/main/res/layout/fragment_details_security.xml index 1dd8549df9..3e232e82d8 100644 --- a/app/src/main/res/layout/fragment_details_security.xml +++ b/app/src/main/res/layout/fragment_details_security.xml @@ -20,154 +20,168 @@ android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" - app:title="@string/details_row_title_manage_security" - app:navigationIcon="@drawable/ic_baseline_arrow_back_24" /> + app:navigationIcon="@drawable/ic_baseline_arrow_back_24" + app:title="@string/details_row_title_manage_security" /> - + + + app:layout_constraintTop_toTopOf="parent" /> + app:layout_constraintTop_toTopOf="parent" /> + app:layout_constraintTop_toBottomOf="@id/tv_long_tap_title" /> + app:layout_constraintBottom_toBottomOf="@id/tv_long_tap_description" + app:layout_constraintTop_toTopOf="@id/tv_long_tap_title" /> + + + + app:layout_constraintTop_toBottomOf="@id/v_long_tap" /> + app:layout_constraintTop_toTopOf="@id/v_passcode" /> + app:layout_constraintTop_toBottomOf="@id/tv_passcode_title" /> + app:layout_constraintBottom_toBottomOf="@id/tv_passcode_description" + app:layout_constraintTop_toTopOf="@id/tv_passcode_title" /> + + app:layout_constraintTop_toBottomOf="@id/v_passcode" /> + app:layout_constraintTop_toTopOf="@id/v_access_code" /> + app:layout_constraintTop_toBottomOf="@id/tv_access_code_title" /> + app:layout_constraintBottom_toBottomOf="@id/tv_access_code_description" + app:layout_constraintTop_toTopOf="@id/tv_access_code_title" /> + app:layout_constraintStart_toEndOf="@+id/guideline" />