Updated on 2026-08-14

This commit is contained in:
Tangem 2021-02-05 14:52:22 +03:00
parent cc8f266777
commit 15fa6b984c
3 changed files with 92 additions and 67 deletions

View file

@ -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<SecurityOption> {
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 = " ")

View file

@ -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