mirror of
https://github.com/Such-Software/hash-wallet.git
synced 2026-10-17 05:41:29 +02:00
fix: improve error handling and messaging in DFX Buy and OpenCryptoPay services (#2509)
* fix: improve error handling and messaging in DFX Buy and OpenCryptoPay services * fix: adjust error handling in DFX Buy provider by updating `_getErrorMessage` function parameters and removing unused imports
This commit is contained in:
@@ -10,11 +10,11 @@ import 'package:cake_wallet/generated/i18n.dart';
|
||||
import 'package:cake_wallet/routes.dart';
|
||||
import 'package:cake_wallet/src/screens/connect_device/connect_device_page.dart';
|
||||
import 'package:cake_wallet/src/widgets/alert_with_one_action.dart';
|
||||
import 'package:cw_core/utils/proxy_wrapper.dart';
|
||||
import 'package:cake_wallet/utils/show_pop_up.dart';
|
||||
import 'package:cake_wallet/view_model/hardware_wallet/ledger_view_model.dart';
|
||||
import 'package:cw_core/crypto_currency.dart';
|
||||
import 'package:cw_core/utils/print_verbose.dart';
|
||||
import 'package:cw_core/utils/proxy_wrapper.dart';
|
||||
import 'package:cw_core/wallet_base.dart';
|
||||
import 'package:cw_core/wallet_type.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
@@ -115,7 +115,7 @@ class DFXBuyProvider extends BuyProvider {
|
||||
final message = responseBody['message'] ?? 'Service unavailable in your country';
|
||||
throw Exception(message);
|
||||
} else {
|
||||
throw Exception('Failed to sign up. Status: ${response.statusCode} ${response.body}');
|
||||
throw Exception('Failed to sign up. ${_getErrorMessage(response.statusCode, response.body)}');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -401,4 +401,15 @@ class DFXBuyProvider extends BuyProvider {
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
String _getErrorMessage(int statusCode, String body) {
|
||||
final responseBody = jsonDecode(body) as Map<String, dynamic>;
|
||||
final message = responseBody['message']?.toString() ?? '';
|
||||
|
||||
if (message.contains("address must match")) {
|
||||
return "The wallet type must match the selected currency";
|
||||
}
|
||||
|
||||
return message.isNotEmpty ? message : "Unknown error: ${statusCode}";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,8 +4,7 @@ class OpenCryptoPayException implements Exception {
|
||||
OpenCryptoPayException([this.message = '']);
|
||||
|
||||
@override
|
||||
String toString() =>
|
||||
'OpenCryptoPayException${message.isNotEmpty ? ': $message' : ''}';
|
||||
String toString() => message.isNotEmpty ? message : 'OpenCryptoPayException';
|
||||
}
|
||||
|
||||
class OpenCryptoPayNotSupportedException extends OpenCryptoPayException {
|
||||
|
||||
@@ -35,14 +35,12 @@ class OpenCryptoPayService {
|
||||
final response =
|
||||
await ProxyWrapper().get(clearnetUri: Uri.https(uri.authority, uri.path, queryParams));
|
||||
|
||||
final body = jsonDecode(response.body) as Map;
|
||||
if (response.statusCode == 200) {
|
||||
final body = jsonDecode(response.body) as Map;
|
||||
|
||||
if (body.keys.contains("txId")) return body["txId"] as String;
|
||||
throw OpenCryptoPayException(body.toString());
|
||||
}
|
||||
throw OpenCryptoPayException(
|
||||
"Unexpected status code ${response.statusCode} ${response.body}");
|
||||
throw OpenCryptoPayException("${response.statusCode}: ${body["message"]}");
|
||||
}
|
||||
|
||||
Future<void> cancelOpenCryptoPayRequest(OpenCryptoPayRequest request) async {
|
||||
|
||||
Reference in New Issue
Block a user