2.3.0 • Published 7 years ago

material-ui-error-reporting v2.3.0

Weekly downloads
19
License
MIT
Repository
github
Last release
7 years ago

material-ui-error-reporting

Build Status

Simple error reporting component for your material-ui application.

Screenshot

Installation

yarn add material-ui-error-reporting

Or with npm

npm i --save material-ui-error-reporting

Usage example

Component:

import React, {Component} from 'react';
import PropTypes from 'prop-types';
import ErrorReporting from 'material-ui-error-reporting';

import {connect} from 'react-redux';

// ...

class App extends Component {
    static defaultProps = {
        error: {
            action: '',
            error: null
        }
    };

    static propTypes = {
        error: PropTypes.object,
        dispatch: PropTypes.func
    };

    render() {
        return (
            <div>
                <ErrorReporting
                    open={this.props.error.error !== null}
                    action={this.props.error.action}
                    error={this.props.error.error}
                    />
            </div>
        );
    }
}

function mapStoreToProps(state) {
    return {
        error: state.errors
    };
}

export default connect(mapStoreToProps)(App);

Reducer:

import {ERROR_ADD} from 'store/action';

import {get} from 'lodash';

let initialState = {
    action: '',
    error: null
};

export const errors = (state = initialState, action) => {
    switch (action.type) {
    case ERROR_ADD:
        return {
            ...state,
            action: get(action.payload, 'action.type', ''),
            error: action.payload.error
        };
    default:
        return state;
    }
};

Action:

const id = (name) => '@@app/' + name;

export const REQUESTING = id('REQUESTING');
export const RECEIVED = id('RECEIVED');
export const FAILED = id('FAILED');
export const ERROR_ADD = id('ERROR_ADD');

const newAction = (type, payload) => ({type, payload});

export const requesting = (payload) => newAction(REQUESTING, payload);
export const received = (payload) => newAction(RECEIVED, payload);
export const failed = (payload) => newAction(FAILED, payload);

export const errorAdd = (error, action) => newAction(ERROR_ADD, {error, action});

Some provider pushing an error:

const url = '...';

export const provide = (criteria) => (dispatch) => {
    dispatch(requesting());
    return request(url + '/' + criteria)
        .then((data) => dispatch(received(data)))
        .catch((err) => {
                dispatch(failed(err));
                dispatch(errorAdd(err, requesting()));
            }
        );
};

Properties

For snackbar props please see material-ui docs.

NameTypeDefaultDescription
openbooleanfalseState of the snackbar, opened or closed.
actionstring''Name of the action where error happened.
errorstring|ErrornullActual error, it should have toString() method.
autoHideDurationnumber10000Snackbar prop.
getMessagefunction(props) => props.action + ': ' + props.errorPure function which will receive props as first argument and must return a string which should contain error message. Default implementation is a concatenation of the action with error delimited by :.
styleobject{backgroundColor: red900, color: grey50}Object with the styles for style, contentStyle and bodyStyle of snackbar(will receive a copy into each of this props).
onErrorfunction(error, action = '') => undefinedWill be called when component props receives non null error.
onClosefunction(reason, error, action = '') => undefinedWill be called when error message closes.

License

MIT

2.3.0

7 years ago

2.2.1

7 years ago

2.1.3

7 years ago

2.1.2

7 years ago

2.1.1

7 years ago

2.1.0

7 years ago

1.0.5

7 years ago

1.0.4

7 years ago

1.0.3

7 years ago

1.0.2

7 years ago

1.0.1

7 years ago

1.0.0

7 years ago