Updated on 2026-08-14
This commit is contained in:
parent
dffa8b2658
commit
7f8592c007
3 changed files with 57 additions and 6 deletions
|
|
@ -2,6 +2,7 @@ package com.tangem.tap.di.domain
|
|||
|
||||
import com.tangem.domain.hotwallet.GetAccessCodeSkippedUseCase
|
||||
import com.tangem.domain.hotwallet.IsHotWalletCreationSupported
|
||||
import com.tangem.domain.hotwallet.IsAccessCodeSimpleUseCase
|
||||
import com.tangem.domain.hotwallet.SetAccessCodeSkippedUseCase
|
||||
import com.tangem.domain.hotwallet.repository.HotWalletRepository
|
||||
import dagger.Module
|
||||
|
|
@ -26,6 +27,12 @@ internal object HotWalletDomainModule {
|
|||
return SetAccessCodeSkippedUseCase(hotWalletRepository)
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideIsAccessCodeSimpleUseCase(): IsAccessCodeSimpleUseCase {
|
||||
return IsAccessCodeSimpleUseCase()
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideIsWalletCreationSupportedUseCase(
|
||||
|
|
|
|||
|
|
@ -0,0 +1,13 @@
|
|||
package com.tangem.domain.hotwallet
|
||||
|
||||
class IsAccessCodeSimpleUseCase {
|
||||
operator fun invoke(accessCode: String): Boolean {
|
||||
return isSequential(accessCode) || isRepeatedCharacters(accessCode)
|
||||
}
|
||||
|
||||
fun isSequential(code: String): Boolean = code.length > 1 &&
|
||||
(code.zipWithNext().all { it.second == it.first + 1 } ||
|
||||
code.zipWithNext().all { it.second == it.first - 1 })
|
||||
|
||||
fun isRepeatedCharacters(code: String): Boolean = code.isNotEmpty() && code.all { it == code.first() }
|
||||
}
|
||||
|
|
@ -11,6 +11,7 @@ import com.tangem.core.ui.extensions.resourceReference
|
|||
import com.tangem.core.ui.message.DialogMessage
|
||||
import com.tangem.core.ui.message.EventMessageAction
|
||||
import com.tangem.domain.common.wallets.UserWalletsListRepository
|
||||
import com.tangem.domain.hotwallet.IsAccessCodeSimpleUseCase
|
||||
import com.tangem.domain.models.wallet.UserWallet
|
||||
import com.tangem.domain.models.wallet.UserWalletId
|
||||
import com.tangem.domain.settings.CanUseBiometryUseCase
|
||||
|
|
@ -56,6 +57,7 @@ internal class AccessCodeModel @Inject constructor(
|
|||
private val shouldShowAskBiometryUseCase: ShouldShowAskBiometryUseCase,
|
||||
private val setAskBiometryShownUseCase: SetAskBiometryShownUseCase,
|
||||
private val canUseBiometryUseCase: CanUseBiometryUseCase,
|
||||
private val isAccessCodeSimpleUseCase: IsAccessCodeSimpleUseCase,
|
||||
private val uiMessageSender: UiMessageSender,
|
||||
) : Model() {
|
||||
|
||||
|
|
@ -117,16 +119,45 @@ internal class AccessCodeModel @Inject constructor(
|
|||
modelScope.launch {
|
||||
delay(timeMillis = SUCCESS_DISPLAY_DURATION_MS)
|
||||
|
||||
params.callbacks.onNewAccessCodeInput(params.userWalletId, uiState.value.accessCode)
|
||||
|
||||
uiState.update { currentState ->
|
||||
currentState.copy(
|
||||
accessCode = "",
|
||||
)
|
||||
if (isAccessCodeSimpleUseCase(uiState.value.accessCode)) {
|
||||
showSimpleAccessCodeDialog()
|
||||
} else {
|
||||
setNewCode()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun setNewCode() {
|
||||
params.callbacks.onNewAccessCodeInput(params.userWalletId, uiState.value.accessCode)
|
||||
|
||||
uiState.update { currentState ->
|
||||
currentState.copy(
|
||||
accessCode = "",
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
private fun showSimpleAccessCodeDialog() {
|
||||
uiMessageSender.send(
|
||||
DialogMessage(
|
||||
title = resourceReference(R.string.access_code_alert_validation_title),
|
||||
message = resourceReference(R.string.access_code_alert_validation_description),
|
||||
firstAction = EventMessageAction(
|
||||
title = resourceReference(R.string.access_code_alert_validation_cancel),
|
||||
onClick = {
|
||||
uiState.update { currentState ->
|
||||
currentState.copy(onAccessCodeChange = ::onAccessCodeChange)
|
||||
}
|
||||
},
|
||||
),
|
||||
secondAction = EventMessageAction(
|
||||
title = resourceReference(R.string.access_code_alert_validation_ok),
|
||||
onClick = ::setNewCode,
|
||||
),
|
||||
),
|
||||
)
|
||||
}
|
||||
|
||||
private suspend fun showErrorAndReset() {
|
||||
uiState.update { currentState ->
|
||||
currentState.copy(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue