mirror of
				https://github.com/Unleash/unleash.git
				synced 2025-10-27 11:02:16 +01:00 
			
		
		
		
	more error-cleanups
This commit is contained in:
		
							parent
							
								
									a8a6750a73
								
							
						
					
					
						commit
						e4f826a5a2
					
				| @ -5,22 +5,20 @@ class ErrorComponent extends React.Component { | ||||
|     static propTypes () { | ||||
|         return { | ||||
|             errors: PropTypes.array.isRequired, | ||||
|             showError: PropTypes.bool, | ||||
|             muteErrors: PropTypes.func.isRequired, | ||||
|             muteError: PropTypes.func.isRequired, | ||||
|         }; | ||||
|     } | ||||
| 
 | ||||
|     render () { | ||||
|         const snackbarMsg = this.props.errors.join(', '); | ||||
|         const showError = this.props.errors.length > 0; | ||||
|         const error = showError ? this.props.errors[0] : undefined; | ||||
|         return ( | ||||
|             <Snackbar | ||||
|                 action="Dismiss" | ||||
|                 active={this.props.showError} | ||||
|                 active={showError} | ||||
|                 icon="question_answer" | ||||
|                 label={snackbarMsg} | ||||
|                 ref="snackbar" | ||||
|                 onClick={this.props.muteErrors} | ||||
|                 onTimeout={this.props.muteErrors} | ||||
|                 label={error} | ||||
|                 onClick={() => this.props.muteError(error)} | ||||
|                 type="warning" | ||||
|             /> | ||||
|         ); | ||||
|  | ||||
| @ -1,13 +1,14 @@ | ||||
| import { connect } from 'react-redux'; | ||||
| import ErrorComponent from './error-component'; | ||||
| import { muteErrors } from '../../store/error-actions'; | ||||
| import { muteError } from '../../store/error-actions'; | ||||
| 
 | ||||
| 
 | ||||
| const mapDispatchToProps = { | ||||
|     muteErrors, | ||||
|     muteError, | ||||
| }; | ||||
| 
 | ||||
| export default connect((state) => ({ | ||||
| const mapStateToProps = (state) =>  ({ | ||||
|     errors: state.error.get('list').toArray(), | ||||
|     showError: state.error.get('showError'), | ||||
| }), mapDispatchToProps)(ErrorComponent); | ||||
| }); | ||||
| 
 | ||||
| export default connect(mapStateToProps, mapDispatchToProps)(ErrorComponent); | ||||
|  | ||||
| @ -1,6 +1,9 @@ | ||||
| export const MUTE_ERRORS = 'MUTE_ERRORS'; | ||||
| export const MUTE_ERROR = 'MUTE_ERROR'; | ||||
| 
 | ||||
| export const muteErrors = () => ({ type: MUTE_ERRORS }); | ||||
| 
 | ||||
| export const muteError = (error) => ({ type: MUTE_ERROR, error }); | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  | ||||
| @ -1,9 +1,10 @@ | ||||
| import { List, Map as $Map } from 'immutable'; | ||||
| import { MUTE_ERRORS } from './error-actions'; | ||||
| import { MUTE_ERROR } from './error-actions'; | ||||
| import { | ||||
|     ERROR_FETCH_FEATURE_TOGGLES, | ||||
|     ERROR_CREATING_FEATURE_TOGGLE, | ||||
|     ERROR_REMOVE_FEATURE_TOGGLE, | ||||
|     ERROR_UPDATE_FEATURE_TOGGLE, | ||||
| } from './feature-actions'; | ||||
| 
 | ||||
| const debug = require('debug')('unleash:error-store'); | ||||
| @ -11,22 +12,26 @@ const debug = require('debug')('unleash:error-store'); | ||||
| function getInitState () { | ||||
|     return new $Map({ | ||||
|         list: new List(), | ||||
|         showError: false, | ||||
|     }); | ||||
| } | ||||
| 
 | ||||
| function addErrorIfNotAlreadyInList (state, error) { | ||||
|     debug('Got error', error); | ||||
|     if (state.get('list').indexOf(error) < 0) { | ||||
|         return state.update('list', (list) => list.push(error)); | ||||
|     } | ||||
|     return state; | ||||
| } | ||||
| 
 | ||||
| const strategies = (state = getInitState(), action) => { | ||||
|     switch (action.type) { | ||||
|         case ERROR_CREATING_FEATURE_TOGGLE: | ||||
|         case ERROR_REMOVE_FEATURE_TOGGLE: | ||||
|         case ERROR_FETCH_FEATURE_TOGGLES: | ||||
|             debug('Got error', action); | ||||
|             return state | ||||
|                 .update('list', (list) => list.push(action.error.message)) | ||||
|                 .set('showError', true); | ||||
|         case MUTE_ERRORS: | ||||
|             debug('muting errors'); | ||||
|             return state.set('showError', false); | ||||
|         case ERROR_UPDATE_FEATURE_TOGGLE: | ||||
|             return addErrorIfNotAlreadyInList(state, action.error.message); | ||||
|         case MUTE_ERROR: | ||||
|             return state.update('list', (list) => list.remove(list.indexOf(action.error))); | ||||
|         default: | ||||
|             return state; | ||||
|     } | ||||
|  | ||||
| @ -5,19 +5,21 @@ const headers = { | ||||
|     'Content-Type': 'application/json', | ||||
| }; | ||||
| 
 | ||||
| const defaultErrorMessage = 'Unexptected exception when talking to unleash-api'; | ||||
| 
 | ||||
| function throwIfNotSuccess (response) { | ||||
|     if (!response.ok) { | ||||
|         if (response.status > 400 && response.status < 404) { | ||||
|             return new Promise((resolve, reject) => { | ||||
|                 response.json().then(body => { | ||||
|                     const errorMsg = body && body.length > 0 ? body[0].msg : 'API call failed'; | ||||
|                     const errorMsg = body && body.length > 0 ? body[0].msg : defaultErrorMessage; | ||||
|                     let error = new Error(errorMsg); | ||||
|                     error.statusCode = response.status; | ||||
|                     reject(error); | ||||
|                 }); | ||||
|             }); | ||||
|         } else { | ||||
|             return Promise.reject(new Error(response.statusText)); | ||||
|             return Promise.reject(new Error(defaultErrorMessage)); | ||||
|         } | ||||
|     } | ||||
|     return Promise.resolve(response); | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user