aboutsummaryrefslogtreecommitdiffstats
path: root/app/scripts/controllers/currency.js
diff options
context:
space:
mode:
Diffstat (limited to 'app/scripts/controllers/currency.js')
-rw-r--r--app/scripts/controllers/currency.js24
1 files changed, 22 insertions, 2 deletions
diff --git a/app/scripts/controllers/currency.js b/app/scripts/controllers/currency.js
index 1e866d2c9..46cdf91a7 100644
--- a/app/scripts/controllers/currency.js
+++ b/app/scripts/controllers/currency.js
@@ -139,8 +139,25 @@ class CurrencyController {
} else {
apiUrl = `https://min-api.cryptocompare.com/data/price?fsym=${nativeCurrency.toUpperCase()}&tsyms=${currentCurrency.toUpperCase()}`
}
- const response = await fetch(apiUrl)
- const parsedResponse = await response.json()
+ // attempt request
+ let response
+ try {
+ response = await fetch(apiUrl)
+ } catch (err) {
+ log.error(new Error(`CurrencyController - Failed to request currency from Infura:\n${err.stack}`))
+ return
+ }
+ // parse response
+ let rawResponse
+ let parsedResponse
+ try {
+ rawResponse = await response.text()
+ parsedResponse = JSON.parse(rawResponse)
+ } catch (err) {
+ log.error(new Error(`CurrencyController - Failed to parse response "${rawResponse}"`))
+ return
+ }
+ // set conversion rate
if (nativeCurrency === 'ETH') {
this.setConversionRate(Number(parsedResponse.bid))
this.setConversionDate(Number(parsedResponse.timestamp))
@@ -157,6 +174,9 @@ class CurrencyController {
log.warn(`MetaMask - Failed to query currency conversion:`, nativeCurrency, currentCurrency, err)
this.setConversionRate(0)
this.setConversionDate('N/A')
+ // throw error
+ log.error(new Error(`CurrencyController - Failed to query rate for currency "${currentCurrency}":\n${err.stack}`))
+ return
}
}