feat: better handle errors in async fetches
This commit is contained in:
@@ -3,19 +3,20 @@ import * as _ from 'lodash';
|
||||
import { BIG_NUMBER_ZERO } from '../constants';
|
||||
import { assetUtils } from '../util/asset';
|
||||
import { coinbaseApi } from '../util/coinbase_api';
|
||||
import { errorFlasher } from '../util/error_flasher';
|
||||
|
||||
import { actions } from './actions';
|
||||
import { Store } from './store';
|
||||
|
||||
export const asyncData = {
|
||||
fetchEthPriceAndDispatchToStore: async (store: Store) => {
|
||||
let ethUsdPrice = BIG_NUMBER_ZERO;
|
||||
try {
|
||||
ethUsdPrice = await coinbaseApi.getEthUsdPrice();
|
||||
} catch (e) {
|
||||
// ignore
|
||||
} finally {
|
||||
const ethUsdPrice = await coinbaseApi.getEthUsdPrice();
|
||||
store.dispatch(actions.updateEthUsdPrice(ethUsdPrice));
|
||||
} catch (e) {
|
||||
const errorMessage = 'Error fetching ETH/USD price';
|
||||
errorFlasher.flashNewErrorMessage(store.dispatch, errorMessage);
|
||||
store.dispatch(actions.updateEthUsdPrice(BIG_NUMBER_ZERO));
|
||||
}
|
||||
},
|
||||
fetchAvailableAssetDatasAndDispatchToStore: async (store: Store) => {
|
||||
@@ -26,7 +27,10 @@ export const asyncData = {
|
||||
const assets = assetUtils.createAssetsFromAssetDatas(assetDatas, assetMetaDataMap, network);
|
||||
store.dispatch(actions.setAvailableAssets(assets));
|
||||
} catch (e) {
|
||||
// ignore
|
||||
const errorMessage = 'Error fetching available assets';
|
||||
errorFlasher.flashNewErrorMessage(store.dispatch, errorMessage);
|
||||
// On error, just specify that none are available
|
||||
store.dispatch(actions.setAvailableAssets([]));
|
||||
}
|
||||
}
|
||||
},
|
||||
|
Reference in New Issue
Block a user