Skip to content

Commit 033f6ca

Browse files
Merge pull request #912 from soramitsu/xcm_validators
Update input validators for XCM
2 parents c9bb4cb + 197fddd commit 033f6ca

File tree

4 files changed

+25
-5
lines changed

4 files changed

+25
-5
lines changed

feature-wallet-api/src/main/java/jp/co/soramitsu/wallet/api/domain/ValidateTransferUseCase.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ interface ValidateTransferUseCase {
2020
recipientAddress: String,
2121
ownAddress: String,
2222
fee: BigInteger?,
23-
confirmedValidations: List<TransferValidationResult> = emptyList()
23+
confirmedValidations: List<TransferValidationResult> = emptyList(),
24+
transferMyselfAvailable: Boolean
2425
): Result<TransferValidationResult>
2526

2627
suspend fun validateExistentialDeposit(

feature-wallet-impl/src/main/java/jp/co/soramitsu/wallet/impl/domain/ValidateTransferUseCaseImpl.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,8 @@ class ValidateTransferUseCaseImpl(
3535
recipientAddress: String,
3636
ownAddress: String,
3737
fee: BigInteger?,
38-
confirmedValidations: List<TransferValidationResult>
38+
confirmedValidations: List<TransferValidationResult>,
39+
transferMyselfAvailable: Boolean
3940
): Result<TransferValidationResult> = kotlin.runCatching {
4041
fee ?: return Result.success(TransferValidationResult.WaitForFee)
4142
val chainId = asset.token.configuration.chainId
@@ -50,7 +51,7 @@ class ValidateTransferUseCaseImpl(
5051

5152
val initialChecks = mapOf(
5253
TransferValidationResult.InvalidAddress to (validateAddressResult.getOrNull() in listOf(null, false)),
53-
TransferValidationResult.TransferToTheSameAddress to (recipientAddress == ownAddress)
54+
TransferValidationResult.TransferToTheSameAddress to (!transferMyselfAvailable && recipientAddress == ownAddress)
5455
)
5556

5657
val initialCheck = performChecks(initialChecks, confirmedValidations)

feature-wallet-impl/src/main/java/jp/co/soramitsu/wallet/impl/presentation/cross_chain/setup/CrossChainSetupViewModel.kt

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -483,7 +483,16 @@ class CrossChainSetupViewModel @Inject constructor(
483483
val selfAddress = currentAccountAddress(asset.token.configuration.chainId) ?: return@launch
484484
val fee = originFeeInPlanksFlow.value
485485
val destinationChainId = chainAssetsManager.destinationChainId ?: return@launch
486-
val validationProcessResult = validateTransferUseCase(inPlanks, asset, destinationChainId, recipientAddress, selfAddress, fee, confirmedValidations)
486+
val validationProcessResult = validateTransferUseCase(
487+
amountInPlanks = inPlanks,
488+
asset = asset,
489+
destinationChainId = destinationChainId,
490+
recipientAddress = recipientAddress,
491+
ownAddress = selfAddress,
492+
fee = fee,
493+
confirmedValidations = confirmedValidations,
494+
transferMyselfAvailable = true
495+
)
487496

488497
// error occurred inside validation
489498
validationProcessResult.exceptionOrNull()?.let {

feature-wallet-impl/src/main/java/jp/co/soramitsu/wallet/impl/presentation/send/setup/SendSetupViewModel.kt

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -405,7 +405,16 @@ class SendSetupViewModel @Inject constructor(
405405
val selfAddress = currentAccountAddress(asset.token.configuration.chainId) ?: return@launch
406406
val fee = feeInPlanksFlow.value
407407
val destinationChainId = asset.token.configuration.chainId
408-
val validationProcessResult = validateTransferUseCase(inPlanks, asset, destinationChainId, recipientAddress, selfAddress, fee, confirmedValidations)
408+
val validationProcessResult = validateTransferUseCase(
409+
amountInPlanks = inPlanks,
410+
asset = asset,
411+
destinationChainId = destinationChainId,
412+
recipientAddress = recipientAddress,
413+
ownAddress = selfAddress,
414+
fee = fee,
415+
confirmedValidations = confirmedValidations,
416+
transferMyselfAvailable = false
417+
)
409418

410419
// error occurred inside validation
411420
validationProcessResult.exceptionOrNull()?.let {

0 commit comments

Comments
 (0)