2019-02-19 03:29:32 +09:00
|
|
|
import { injectIntl } from 'react-intl';
|
2023-05-28 23:38:10 +09:00
|
|
|
|
2016-11-21 03:39:18 +09:00
|
|
|
import { connect } from 'react-redux';
|
2023-05-28 23:38:10 +09:00
|
|
|
|
2016-11-21 03:39:18 +09:00
|
|
|
import { NotificationStack } from 'react-notification';
|
2023-05-28 23:38:10 +09:00
|
|
|
|
2023-11-15 20:01:51 +09:00
|
|
|
import { dismissAlert } from '../../../actions/alerts';
|
|
|
|
import { getAlerts } from '../../../selectors';
|
2016-09-13 02:20:55 +09:00
|
|
|
|
2023-07-09 03:01:08 +09:00
|
|
|
const formatIfNeeded = (intl, message, values) => {
|
|
|
|
if (typeof message === 'object') {
|
|
|
|
return intl.formatMessage(message, values);
|
|
|
|
}
|
2019-02-19 03:29:32 +09:00
|
|
|
|
2023-07-09 03:01:08 +09:00
|
|
|
return message;
|
2019-02-19 03:29:32 +09:00
|
|
|
};
|
2016-09-13 02:20:55 +09:00
|
|
|
|
2023-07-09 03:01:08 +09:00
|
|
|
const mapStateToProps = (state, { intl }) => ({
|
|
|
|
notifications: getAlerts(state).map(alert => ({
|
|
|
|
...alert,
|
|
|
|
action: formatIfNeeded(intl, alert.action, alert.values),
|
|
|
|
title: formatIfNeeded(intl, alert.title, alert.values),
|
|
|
|
message: formatIfNeeded(intl, alert.message, alert.values),
|
|
|
|
})),
|
|
|
|
});
|
|
|
|
|
|
|
|
const mapDispatchToProps = (dispatch) => ({
|
|
|
|
onDismiss (alert) {
|
|
|
|
dispatch(dismissAlert(alert));
|
|
|
|
},
|
|
|
|
});
|
2016-09-13 02:20:55 +09:00
|
|
|
|
2019-02-19 03:29:32 +09:00
|
|
|
export default injectIntl(connect(mapStateToProps, mapDispatchToProps)(NotificationStack));
|