diff --git a/app/src/main/java/com/tangem/wallet/btc/BtcEngine.java b/app/src/main/java/com/tangem/wallet/btc/BtcEngine.java index c33f48c11d..df6b877f98 100644 --- a/app/src/main/java/com/tangem/wallet/btc/BtcEngine.java +++ b/app/src/main/java/com/tangem/wallet/btc/BtcEngine.java @@ -1098,8 +1098,12 @@ public class BtcEngine extends CoinEngine { } } if (validateAddress(resolvedAddress)) { - coinData.setResolvedPayIdAddress(resolvedAddress); - observer.onComplete(); + if (resolvedAddress.equals(coinData.getWallet())) { + observer.onError(new Exception(ctx.getString(R.string.prepare_transaction_error_same_address))); + } else { + coinData.setResolvedPayIdAddress(resolvedAddress); + observer.onComplete(); + } } else { observer.onError(new Exception("Unknown address format in PayID response")); } diff --git a/app/src/main/java/com/tangem/wallet/eth/EthEngine.java b/app/src/main/java/com/tangem/wallet/eth/EthEngine.java index 3aedf1f65d..0567b5bf47 100644 --- a/app/src/main/java/com/tangem/wallet/eth/EthEngine.java +++ b/app/src/main/java/com/tangem/wallet/eth/EthEngine.java @@ -684,11 +684,16 @@ public class EthEngine extends CoinEngine { } } if (validateAddress(resolvedAddress)) { - coinData.setResolvedPayIdAddress(resolvedAddress); - if (serverApiInfura.isRequestsSequenceCompleted() && serverApiPayId.isRequestsSequenceCompleted()) { - blockchainRequestsCallbacks.onComplete(!ctx.hasError()); + if (resolvedAddress.equals(coinData.getWallet())) { + ctx.setError(R.string.prepare_transaction_error_same_address); + blockchainRequestsCallbacks.onComplete(false); } else { - blockchainRequestsCallbacks.onProgress(); + coinData.setResolvedPayIdAddress(resolvedAddress); + if (serverApiInfura.isRequestsSequenceCompleted() && serverApiPayId.isRequestsSequenceCompleted()) { + blockchainRequestsCallbacks.onComplete(!ctx.hasError()); + } else { + blockchainRequestsCallbacks.onProgress(); + } } } else { ctx.setError("Unknown address format in PayID response"); diff --git a/app/src/main/java/com/tangem/wallet/xrp/XrpEngine.java b/app/src/main/java/com/tangem/wallet/xrp/XrpEngine.java index 749e0170b9..2b5e4ca733 100644 --- a/app/src/main/java/com/tangem/wallet/xrp/XrpEngine.java +++ b/app/src/main/java/com/tangem/wallet/xrp/XrpEngine.java @@ -633,9 +633,19 @@ public class XrpEngine extends CoinEngine { XrpXAddressDecoded xAddressDecoded = XrpXAddressService.Companion.decode(resolvedAddress); if (xAddressDecoded == null) { // classic address - serverApiRipple.requestData(ServerApiRipple.RIPPLE_ACCOUNT_INFO, resolvedAddress, ""); //TODO: maybe just assume PayID account is created? + if (resolvedAddress.equals(coinData.getWallet())) { + ctx.setError(R.string.prepare_transaction_error_same_address); + blockchainRequestsCallbacks.onComplete(false); + } else { + serverApiRipple.requestData(ServerApiRipple.RIPPLE_ACCOUNT_INFO, resolvedAddress, ""); + } } else { // X-address - serverApiRipple.requestData(ServerApiRipple.RIPPLE_ACCOUNT_INFO, xAddressDecoded.getAddress(), ""); + if (xAddressDecoded.getAddress().equals(coinData.getWallet())) { + ctx.setError(R.string.prepare_transaction_error_same_address); + blockchainRequestsCallbacks.onComplete(false); + } else { + serverApiRipple.requestData(ServerApiRipple.RIPPLE_ACCOUNT_INFO, xAddressDecoded.getAddress(), ""); + } } } else { ctx.setError("Unknown address format in PayID response");