Update Flash component and withMessages container

This commit is contained in:
Bernardo Dias 2018-05-02 15:02:52 -03:00
parent dd0ff54f9a
commit 5b9bb61688
2 changed files with 19 additions and 14 deletions

View file

@ -21,19 +21,19 @@ class Flash extends PureComponent {
}
getProperties = () => {
const { errorObject } = this.props;
if (typeof errorObject === 'string') {
const messageObject = this.props.message;
if (typeof messageObject === 'string') {
// if error is a string, use it as message
return {
message: errorObject,
message: messageObject,
type: 'error'
}
} else {
// else return full error object after internationalizing message
const { id, message, properties } = errorObject;
const { id, message, properties } = messageObject;
const translatedMessage = this.context.intl.formatMessage({ id, defaultMessage: message }, properties);
return {
...errorObject,
...messageObject,
message: translatedMessage,
};
}
@ -42,7 +42,7 @@ class Flash extends PureComponent {
render() {
const { message, type } = this.getProperties();
const flashType = type === "error" ? "danger" : flashType; // if flashType is "error", use "danger" instead
const flashType = type === 'error' ? 'danger' : type; // if flashType is "error", use "danger" instead
return (
<Components.Alert className="flash-message" variant={flashType} onDismiss={this.dismissFlash}>
@ -72,7 +72,7 @@ const FlashMessages = ({messages, clear, markAsSeen}) => {
);
}
FlashMessages.displayName = "FlashMessages";
FlashMessages.displayName = 'FlashMessages';
registerComponent('FlashMessages', FlashMessages, withMessages);

View file

@ -16,11 +16,10 @@ import { connect } from 'react-redux';
addAction({
messages: {
flash(content, flashType) {
flash(content) {
return {
type: 'FLASH',
content,
flashType,
};
},
clear(i) {
@ -53,14 +52,20 @@ addAction({
addReducer({
messages: (state = [], action) => {
// default values
const flashType = typeof action.flashType === 'undefined' ? 'error' : action.flashType;
const flashType = action.content && typeof action.content.type !== 'undefined' ? action.content.type : 'error';
const currentMsg = typeof action.i === 'undefined' ? {} : state[action.i];
switch(action.type) {
case 'FLASH':
return [
...state,
{ _id: state.length, content: action.content, flashType, seen: false, show: true },
{
_id: state.length,
...action.content,
type: flashType,
seen: false,
show: true,
},
];
case 'MARK_AS_SEEN':
return [