latestErrorDismissed -> latestErrorDisplay enum
This commit is contained in:
@@ -3,34 +3,33 @@ import * as React from 'react';
|
||||
import { connect } from 'react-redux';
|
||||
|
||||
import { SlidingError } from '../components/sliding_error';
|
||||
import { State } from '../redux/reducer';
|
||||
import { LatestErrorDisplay, State } from '../redux/reducer';
|
||||
import { errorDescription } from '../util/error_description';
|
||||
|
||||
export interface LatestErrorComponentProps {
|
||||
assetData?: string;
|
||||
latestError?: any;
|
||||
latestErrorDismissed?: boolean;
|
||||
slidingDirection: 'down' | 'up';
|
||||
}
|
||||
|
||||
export const LatestErrorComponent: React.StatelessComponent<LatestErrorComponentProps> = props => {
|
||||
if (!props.latestError) {
|
||||
return <div />;
|
||||
}
|
||||
const slidingDirection = props.latestErrorDismissed ? 'down' : 'up';
|
||||
const { icon, message } = errorDescription(props.latestError, props.assetData);
|
||||
return <SlidingError direction={slidingDirection} icon={icon} message={message} />;
|
||||
return <SlidingError direction={props.slidingDirection} icon={icon} message={message} />;
|
||||
};
|
||||
|
||||
interface ConnectedState {
|
||||
assetData?: string;
|
||||
latestError?: any;
|
||||
latestErrorDismissed?: boolean;
|
||||
slidingDirection: 'down' | 'up';
|
||||
}
|
||||
export interface LatestErrorProps {}
|
||||
const mapStateToProps = (state: State, _ownProps: LatestErrorProps): ConnectedState => ({
|
||||
assetData: state.selectedAssetData,
|
||||
latestError: state.latestError,
|
||||
latestErrorDismissed: state.latestErrorDismissed,
|
||||
slidingDirection: state.latestErrorDisplay === LatestErrorDisplay.Present ? 'up' : 'down',
|
||||
});
|
||||
|
||||
export const LatestError = connect(mapStateToProps)(LatestErrorComponent);
|
||||
|
||||
@@ -7,22 +7,19 @@ import { AsyncProcessState } from '../types';
|
||||
|
||||
import { Action, ActionTypes } from './actions';
|
||||
|
||||
interface BaseState {
|
||||
export enum LatestErrorDisplay {
|
||||
Present,
|
||||
Hidden,
|
||||
}
|
||||
export interface State {
|
||||
selectedAssetData?: string;
|
||||
selectedAssetAmount?: BigNumber;
|
||||
selectedAssetBuyState: AsyncProcessState;
|
||||
ethUsdPrice?: BigNumber;
|
||||
latestBuyQuote?: BuyQuote;
|
||||
latestError?: any;
|
||||
latestErrorDisplay: LatestErrorDisplay;
|
||||
}
|
||||
interface StateWithError extends BaseState {
|
||||
latestError: any;
|
||||
latestErrorDismissed: boolean;
|
||||
}
|
||||
interface StateWithoutError extends BaseState {
|
||||
latestError: undefined;
|
||||
latestErrorDismissed: undefined;
|
||||
}
|
||||
export type State = StateWithError | StateWithoutError;
|
||||
|
||||
export const INITIAL_STATE: State = {
|
||||
// TODO: Remove hardcoded zrxAssetData
|
||||
@@ -32,7 +29,7 @@ export const INITIAL_STATE: State = {
|
||||
ethUsdPrice: undefined,
|
||||
latestBuyQuote: undefined,
|
||||
latestError: undefined,
|
||||
latestErrorDismissed: undefined,
|
||||
latestErrorDisplay: LatestErrorDisplay.Hidden,
|
||||
};
|
||||
|
||||
export const reducer = (state: State = INITIAL_STATE, action: Action): State => {
|
||||
@@ -61,18 +58,18 @@ export const reducer = (state: State = INITIAL_STATE, action: Action): State =>
|
||||
return {
|
||||
...state,
|
||||
latestError: action.data,
|
||||
latestErrorDismissed: false,
|
||||
latestErrorDisplay: LatestErrorDisplay.Present,
|
||||
};
|
||||
case ActionTypes.HIDE_ERROR:
|
||||
return {
|
||||
...state,
|
||||
latestErrorDismissed: true,
|
||||
latestErrorDisplay: LatestErrorDisplay.Hidden,
|
||||
};
|
||||
case ActionTypes.CLEAR_ERROR:
|
||||
return {
|
||||
...state,
|
||||
latestError: undefined,
|
||||
latestErrorDismissed: undefined,
|
||||
latestErrorDisplay: LatestErrorDisplay.Hidden,
|
||||
};
|
||||
default:
|
||||
return state;
|
||||
|
||||
Reference in New Issue
Block a user