Make error reporter not return a promise and add more environment possibilities

This commit is contained in:
fragosti
2018-07-12 15:50:13 -07:00
parent ddb70a89ad
commit ac5588c7c4
14 changed files with 51 additions and 43 deletions

View File

@@ -571,7 +571,7 @@ export class Blockchain {
configs.DEFAULT_TRACKED_TOKEN_SYMBOLS,
)}) not found in tokenRegistry: ${JSON.stringify(tokenRegistryTokens)}`,
);
await errorReporter.reportAsync(err);
errorReporter.report(err);
return;
}
if (_.isEmpty(trackedTokensByAddress)) {
@@ -683,7 +683,7 @@ export class Blockchain {
// errors will be thrown by `watch`. For now, let's log the error
// to rollbar and stop watching when one occurs
// tslint:disable-next-line:no-floating-promises
errorReporter.reportAsync(err); // fire and forget
errorReporter.report(err); // fire and forget
return;
} else {
const decodedLog = decodedLogEvent.log;
@@ -915,7 +915,7 @@ export class Blockchain {
if (_.includes(errMsg, 'not been deployed to detected network')) {
throw new Error(BlockchainCallErrs.ContractDoesNotExist);
} else {
await errorReporter.reportAsync(err);
errorReporter.report(err);
throw new Error(BlockchainCallErrs.UnhandledError);
}
}

View File

@@ -118,7 +118,7 @@ export class EthWethConversionButton extends React.Component<
? 'Failed to wrap your ETH. Please try again.'
: 'Failed to unwrap your WETH. Please try again.';
this.props.dispatcher.showFlashMessage(errorMsg);
await errorReporter.reportAsync(err);
errorReporter.report(err);
}
}
this.setState({

View File

@@ -583,7 +583,7 @@ export class FillOrder extends React.Component<FillOrderProps, FillOrderState> {
this.setState({
globalErrMsg,
});
await errorReporter.reportAsync(err);
errorReporter.report(err);
return;
}
}
@@ -654,7 +654,7 @@ export class FillOrder extends React.Component<FillOrderProps, FillOrderState> {
this.setState({
globalErrMsg,
});
await errorReporter.reportAsync(err);
errorReporter.report(err);
return;
}
}

View File

@@ -349,7 +349,7 @@ export class GenerateOrderForm extends React.Component<GenerateOrderFormProps, G
globalErrMsg = 'An unexpected error occured. Please try refreshing the page';
logUtils.log(`Unexpected error occured: ${err}`);
logUtils.log(err.stack);
await errorReporter.reportAsync(err);
errorReporter.report(err);
}
}
this.setState({

View File

@@ -129,7 +129,7 @@ export class AllowanceToggle extends React.Component<AllowanceToggleProps, Allow
logUtils.log(`Unexpected error encountered: ${err}`);
logUtils.log(err.stack);
this.props.onErrorOccurred(BalanceErrs.allowanceSettingFailed);
await errorReporter.reportAsync(err);
errorReporter.report(err);
}
}
private _isAllowanceSet(): boolean {

View File

@@ -154,7 +154,7 @@ You can see and fill it here: ${this.state.shareLink}`);
if (response.status !== 200 || bodyObj.status_code !== 200) {
// TODO: Show error message in UI
logUtils.log(`Unexpected status code: ${response.status} -> ${responseBody}`);
await errorReporter.reportAsync(new Error(`Bitly returned non-200: ${JSON.stringify(response)}`));
errorReporter.report(new Error(`Bitly returned non-200: ${JSON.stringify(response)}`));
return '';
}
return bodyObj.data.url;

View File

@@ -80,7 +80,7 @@ export class SendButton extends React.Component<SendButtonProps, SendButtonState
logUtils.log(`Unexpected error encountered: ${err}`);
logUtils.log(err.stack);
this.props.onError();
await errorReporter.reportAsync(err);
errorReporter.report(err);
}
}
this.setState({

View File

@@ -526,7 +526,7 @@ export class TokenBalances extends React.Component<TokenBalancesProps, TokenBala
this.setState({
errorType: BalanceErrs.mintingFailed,
});
await errorReporter.reportAsync(err);
errorReporter.report(err);
return false;
}
}
@@ -561,7 +561,7 @@ export class TokenBalances extends React.Component<TokenBalancesProps, TokenBala
this.setState({
errorType,
});
await errorReporter.reportAsync(new Error(`Faucet returned non-200: ${JSON.stringify(response)}`));
errorReporter.report(new Error(`Faucet returned non-200: ${JSON.stringify(response)}`));
return false;
}

View File

@@ -219,7 +219,7 @@ export class WrapEtherItem extends React.Component<WrapEtherItemProps, WrapEther
this.props.dispatcher.showFlashMessage('Failed to unwrap your WETH. Please try again.');
analytics.logEvent('Portal', 'Unwrap WETH Failed', networkName);
}
await errorReporter.reportAsync(err);
errorReporter.report(err);
}
}
this.setState({

View File

@@ -244,6 +244,8 @@ export enum BlockchainCallErrs {
export enum Environments {
DEVELOPMENT = 'DEVELOPMENT',
DOGFOOD = 'DOGFOOD',
STAGING = 'STAGING',
PRODUCTION = 'PRODUCTION',
}

View File

@@ -2,10 +2,6 @@ import * as _ from 'lodash';
import { Environments, OutdatedWrappedEtherByNetworkId, PublicNodeUrlsByNetworkId } from 'ts/types';
const BASE_URL = window.location.origin;
const isDevelopment = _.includes(
['https://0xproject.localhost:3572', 'https://localhost:3572', 'https://127.0.0.1'],
BASE_URL,
);
const INFURA_API_KEY = 'T5WSC8cautR4KXyYgsRs';
export const configs = {
@@ -21,7 +17,6 @@ export const configs = {
DOMAIN_DOGFOOD: 'dogfood.0xproject.com',
DOMAIN_DEVELOPMENT: '0xproject.localhost:3572',
DOMAIN_PRODUCTION: '0xproject.com',
ENVIRONMENT: isDevelopment ? Environments.DEVELOPMENT : Environments.PRODUCTION,
GOOGLE_ANALYTICS_ID: 'UA-98720122-1',
LAST_LOCAL_STORAGE_FILL_CLEARANCE_DATE: '2017-11-22',
LAST_LOCAL_STORAGE_TRACKED_TOKEN_CLEARANCE_DATE: '2018-7-5',

View File

@@ -2,6 +2,7 @@ import { logUtils } from '@0xproject/utils';
import { Environments } from 'ts/types';
import { configs } from 'ts/utils/configs';
import { constants } from 'ts/utils/constants';
import { utils } from 'ts/utils/utils';
// Suggested way to include Rollbar with Webpack
// https://github.com/rollbar/rollbar.js/tree/master/examples/webpack
@@ -12,7 +13,7 @@ const rollbarConfig = {
itemsPerMinute: 10,
maxItems: 500,
payload: {
environment: configs.ENVIRONMENT,
environment: utils.getEnvironment(),
client: {
javascript: {
source_map_enabled: true,
@@ -40,21 +41,14 @@ import Rollbar = require('../../public/js/rollbar.umd.min.js');
const rollbar = Rollbar.init(rollbarConfig);
export const errorReporter = {
async reportAsync(err: Error): Promise<any> {
if (configs.ENVIRONMENT === Environments.DEVELOPMENT) {
report(err: Error): void {
if (utils.getEnvironment() === Environments.DEVELOPMENT) {
return; // Let's not log development errors to rollbar
}
return new Promise((resolve, _reject) => {
rollbar.error(err, (rollbarErr: Error) => {
if (rollbarErr) {
logUtils.log(`Error reporting to rollbar, ignoring: ${rollbarErr}`);
// We never want to reject and cause the app to throw because of rollbar
resolve();
} else {
resolve();
}
});
rollbar.error(err, (rollbarErr: Error) => {
if (rollbarErr) {
logUtils.log(`Error reporting to rollbar, ignoring: ${rollbarErr}`);
}
});
},
};

View File

@@ -9,8 +9,7 @@ const logErrorIfPresent = (response: Response, requestedURL: string) => {
const errorText = `Error requesting url: ${requestedURL}, ${response.status}: ${response.statusText}`;
logUtils.log(errorText);
const error = Error(errorText);
// tslint:disable-next-line:no-floating-promises
errorReporter.reportAsync(error);
errorReporter.report(error);
throw error;
}
};

View File

@@ -31,8 +31,6 @@ import { constants } from 'ts/utils/constants';
import { errorReporter } from 'ts/utils/error_reporter';
import * as u2f from 'ts/vendor/u2f_api';
const isDogfood = (): boolean => _.includes(window.location.href, configs.DOMAIN_DOGFOOD);
export const utils = {
assert(condition: boolean, message: string): void {
if (!condition) {
@@ -347,10 +345,13 @@ export const utils = {
return parsedProviderName;
},
getBackendBaseUrl(): string {
return isDogfood() ? configs.BACKEND_BASE_STAGING_URL : configs.BACKEND_BASE_PROD_URL;
return utils.isDogfood() ? configs.BACKEND_BASE_STAGING_URL : configs.BACKEND_BASE_PROD_URL;
},
isDevelopment(): boolean {
return configs.ENVIRONMENT === Environments.DEVELOPMENT;
return _.includes(
['https://0xproject.localhost:3572', 'https://localhost:3572', 'https://127.0.0.1'],
window.location.origin,
);
},
isStaging(): boolean {
return _.includes(window.location.href, configs.DOMAIN_STAGING);
@@ -358,7 +359,27 @@ export const utils = {
isExternallyInjected(providerType: ProviderType, injectedProviderName: string): boolean {
return providerType === ProviderType.Injected && injectedProviderName !== constants.PROVIDER_NAME_PUBLIC;
},
isDogfood,
isDogfood(): boolean {
return _.includes(window.location.href, configs.DOMAIN_DOGFOOD);
},
isProduction(): boolean {
return _.includes(window.location.href, configs.DOMAIN_PRODUCTION);
},
getEnvironment(): Environments {
if (utils.isDogfood()) {
return Environments.DOGFOOD;
}
if (utils.isDevelopment()) {
return Environments.DEVELOPMENT;
}
if (utils.isStaging()) {
return Environments.STAGING;
}
if (utils.isProduction()) {
return Environments.PRODUCTION;
}
return undefined;
},
shouldShowJobsPage(): boolean {
return this.isDevelopment() || this.isStaging() || this.isDogfood();
},
@@ -391,10 +412,7 @@ export const utils = {
const format = `0,0.${_.repeat('0', precision)}`;
const formattedAmount = numeral(unitAmount).format(format);
if (_.isNaN(formattedAmount)) {
// tslint:disable-next-line:no-floating-promises
errorReporter.reportAsync(
new Error(`amount ${BigNumber}, decimals ${decimals} could not be formatted and returned NaN.`),
);
// https://github.com/adamwdraper/Numeral-js/issues/596
return format;
}
return formattedAmount;