CW-674: Improve Exchange Flow With Timeout For Rates (#1536)

* fix: Improve exchange flow by adding a timeout to the call to fetch rate from providers

* fix: Adjust time limit for fetching rate to 7 seconds and add timelimit to fetching limits

* Improve loadlimits function [skip ci]

---------

Co-authored-by: OmarHatem <omarh.ismail1@gmail.com>
This commit is contained in:
Adegoke David
2024-07-21 02:26:05 +03:00
committed by GitHub
co-authored by OmarHatem
parent 415d2a3573
commit 341e06196d
2 changed files with 52 additions and 22 deletions
@@ -1,4 +1,5 @@
import 'dart:convert';
import 'dart:developer';
import 'package:cake_wallet/.secrets.g.dart' as secrets;
import 'package:cake_wallet/exchange/provider/exchange_provider.dart';
@@ -29,6 +30,7 @@ class SideShiftExchangeProvider extends ExchangeProvider {
CryptoCurrency.bttc,
CryptoCurrency.usdt,
CryptoCurrency.eos,
CryptoCurrency.xmr,
];
static const affiliateId = secrets.sideShiftAffiliateId;
@@ -137,8 +139,20 @@ class SideShiftExchangeProvider extends ExchangeProvider {
final response = await get(uri);
final responseJSON = json.decode(response.body) as Map<String, dynamic>;
if (response.statusCode == 500) {
final responseJSON = json.decode(response.body) as Map<String, dynamic>;
final error = responseJSON['error']['message'] as String;
throw Exception('SideShift Internal Server Error: $error');
}
if (response.statusCode != 200) {
throw Exception('Unexpected http status: ${response.statusCode}');
}
return double.parse(responseJSON['rate'] as String);
} catch (_) {
} catch (e) {
log('Error fetching rate in SideShift Provider: ${e.toString()}');
return 0.00;
}
}