From 7d67d2ffc7f8b5537b780612a365d7b73fb9e2a1 Mon Sep 17 00:00:00 2001 From: Konstantin Ullrich Date: Fri, 22 Aug 2025 13:50:24 +0200 Subject: [PATCH] feat: add Zano support to Open CryptoPay (#2475) Co-authored-by: Omar Hatem --- cw_zano/lib/model/pending_zano_transaction.dart | 2 +- .../open_crypto_pay/open_cryptopay_service.dart | 17 +++++++---------- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/cw_zano/lib/model/pending_zano_transaction.dart b/cw_zano/lib/model/pending_zano_transaction.dart index 415e58303..99706d3ac 100644 --- a/cw_zano/lib/model/pending_zano_transaction.dart +++ b/cw_zano/lib/model/pending_zano_transaction.dart @@ -44,7 +44,7 @@ class PendingZanoTransaction with PendingTransaction { @override Future commit() async { - await zanoWallet.transfer(destinations, fee, comment); + transferResult = await zanoWallet.transfer(destinations, fee, comment); zanoWallet.fetchTransactions(); } diff --git a/lib/core/open_crypto_pay/open_cryptopay_service.dart b/lib/core/open_crypto_pay/open_cryptopay_service.dart index 52b4d6477..f6c11bbbf 100644 --- a/lib/core/open_crypto_pay/open_cryptopay_service.dart +++ b/lib/core/open_crypto_pay/open_cryptopay_service.dart @@ -13,7 +13,8 @@ class OpenCryptoPayService { value.toLowerCase().startsWith("lnurl"); static bool requiresClientCommit(CryptoCurrency currency) => - [CryptoCurrency.xmr, CryptoCurrency.sol].contains(currency) || currency.tag == "SOL"; + [CryptoCurrency.xmr, CryptoCurrency.zano, CryptoCurrency.sol].contains(currency) || + currency.tag == "SOL"; Future commitOpenCryptoPayRequest( String txHex, { @@ -28,12 +29,11 @@ class OpenCryptoPayService { queryParams['quote'] = request.quote; queryParams['asset'] = asset.title; queryParams['method'] = _getMethod(asset); - queryParams['hex'] = txHex; queryParams['tx'] = txId; + if (txHex.isNotEmpty) queryParams['hex'] = txHex; final response = await ProxyWrapper().get(clearnetUri: Uri.https(uri.authority, uri.path, queryParams)); - if (response.statusCode == 200) { final body = jsonDecode(response.body) as Map; @@ -76,7 +76,6 @@ class OpenCryptoPayService { Future<(_OpenCryptoPayQuote, Map>)> _getOpenCryptoPayParams(Uri uri) async { final response = await ProxyWrapper().get(clearnetUri: uri); - if (response.statusCode == 200) { final responseBody = jsonDecode(response.body) as Map; @@ -122,8 +121,8 @@ class OpenCryptoPayService { queryParams['asset'] = asset.title; queryParams['method'] = _getMethod(asset); - final response = await ProxyWrapper().get(clearnetUri: Uri.https(uri.authority, uri.path, queryParams)); - + final response = + await ProxyWrapper().get(clearnetUri: Uri.https(uri.authority, uri.path, queryParams)); if (response.statusCode == 200) { final responseBody = jsonDecode(response.body) as Map; @@ -181,11 +180,9 @@ class _OpenCryptoPayQuote { final String id; final DateTime expiration; - _OpenCryptoPayQuote( - this.callbackUrl, this.displayName, this.id, this.expiration); + _OpenCryptoPayQuote(this.callbackUrl, this.displayName, this.id, this.expiration); - _OpenCryptoPayQuote.fromJson( - this.callbackUrl, this.displayName, Map json) + _OpenCryptoPayQuote.fromJson(this.callbackUrl, this.displayName, Map json) : id = json['id'] as String, expiration = DateTime.parse(json['expiration'] as String); }