Skip to content

Commit 713538d

Browse files
author
Justin Menestrina
committed
fixed mapPropsToState issue
1 parent 4d11479 commit 713538d

File tree

6 files changed

+40
-24
lines changed

6 files changed

+40
-24
lines changed

lib/actions.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ var initializeAlert = exports.initializeAlert = function initializeAlert(alertNa
1515
return { type: alertConstants.INITIALIZE_ALERT, alertName: alertName };
1616
};
1717

18-
var createAlert = exports.createAlert = function createAlert(alertName) {
19-
return { type: alertConstants.CREATE_ALERT, alertName: alertName };
18+
var createAlert = exports.createAlert = function createAlert(alertName, alertMessage) {
19+
return { type: alertConstants.CREATE_ALERT, alertName: alertName, alertMessage: alertMessage };
2020
};
2121

2222
var dismissAlert = exports.dismissAlert = function dismissAlert(alertName) {

lib/alertContainer.js

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,11 @@ function _possibleConstructorReturn(self, call) { if (!self) { throw new Referen
2828

2929
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
3030

31+
var defaultState = {
32+
isVisible: false,
33+
message: ''
34+
};
35+
3136
var createAlert = function createAlert(config) {
3237
return function (WrappedComponent) {
3338
var alertName = config.alertName;
@@ -62,7 +67,7 @@ var createAlert = function createAlert(config) {
6267
var _this2 = this;
6368

6469
if (!this.props.isVisible) return false;
65-
return _react2.default.createElement(WrappedComponent, { close: function close() {
70+
return _react2.default.createElement(WrappedComponent, { message: this.props.message, close: function close() {
6671
return _this2.close();
6772
} });
6873
}
@@ -72,7 +77,12 @@ var createAlert = function createAlert(config) {
7277
}(_react.Component);
7378

7479
function mapStateToProps(state) {
75-
return { isVisible: state.alerts ? state.alerts[alertName] : false };
80+
var alerts = state.alerts;
81+
if (!alerts[alertName]) return defaultState;
82+
return {
83+
isVisible: alerts[alertName].isVisible,
84+
message: alerts[alertName].message
85+
};
7686
};
7787

7888
function mapDispatchToProps(dispatch) {

lib/reducer.js

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,16 @@ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj;
1616

1717
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
1818

19+
var initialState = { isVisible: false, message: '' };
20+
1921
var behaviors = (_behaviors = {}, _defineProperty(_behaviors, alertTypes.CREATE_ALERT, function (state, action) {
20-
return true;
22+
var alertMessage = action.alertMessage;
23+
24+
return { isVisible: true, message: alertMessage };
2125
}), _defineProperty(_behaviors, alertTypes.DISMISS_ALERT, function (state, action) {
22-
return false;
26+
return initialState;
2327
}), _behaviors);
2428

25-
var initialAlertState = false;
26-
2729
var reducer = function reducer(state, action) {
2830
var behavior = behaviors[action.type];
2931
return behavior ? behavior(state, action) : state;
@@ -37,20 +39,18 @@ var alertReducer = function alertReducer() {
3739

3840
if (state === undefined) return state;
3941
if (type === alertTypes.INITIALIZE_ALERT) {
40-
return _extends({}, state, _defineProperty({}, alertName, false));
42+
return _extends({}, state, _defineProperty({}, alertName, initialState));
4143
}
4244
if (type === alertTypes.DISMISS_ALL_ALERTS) {
4345
return Object.keys(state).reduce(function (acc, alert) {
44-
var prev = Object.assign({}, acc, _defineProperty({}, alert, initialAlertState));
45-
return prev;
46+
return Object.assign({}, acc, _defineProperty({}, alert, initialState));
4647
}, {});
4748
}
4849

4950
if (state[alertName] === undefined) return state;
5051
if (type === alertTypes.DESTROY_ALERT) {
5152
return Object.keys(state).reduce(function (acc, alert) {
52-
var prev = alert === alertName ? acc : _extends({}, acc, _defineProperty({}, alert, state[alert]));
53-
return prev;
53+
return alert === alertName ? acc : _extends({}, acc, _defineProperty({}, alert, state[alert]));
5454
}, {});
5555
}
5656
return Object.assign({}, state, _defineProperty({}, alertName, reducer(state[alertName], action)));

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "react-redux-alerts",
3-
"version": "1.5.0",
3+
"version": "1.5.6",
44
"description": "A lightweight library for creating keyed alerts in a Redux app",
55
"main": "./lib/index.js",
66
"scripts": {

src/alertContainer.js

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,11 @@ import { connect } from 'react-redux';
33
import { bindActionCreators } from 'redux';
44
import * as alertActions from './actions';
55

6+
const defaultState = {
7+
isVisible: false,
8+
message: ''
9+
};
10+
611
const createAlert = config => WrappedComponent => {
712
const { alertName } = config;
813

@@ -21,15 +26,20 @@ const createAlert = config => WrappedComponent => {
2126
render() {
2227
if(!this.props.isVisible) return false;
2328
return (
24-
<WrappedComponent {...this.props} close={() => this.close()} />
29+
<WrappedComponent message={this.props.message} close={() => this.close()} />
2530
);
2631
}
2732
}
2833

29-
function mapStateToProps (state) {
30-
return { isVisible: state.alerts ? state.alerts[alertName] : false };
34+
function mapStateToProps(state) {
35+
const alerts = state.alerts;
36+
if (!alerts[alertName]) return defaultState;
37+
return {
38+
isVisible: alerts[alertName].isVisible,
39+
message: alerts[alertName].message
40+
};
3141
};
32-
42+
3343
function mapDispatchToProps (dispatch) {
3444
return { actions: bindActionCreators(alertActions, dispatch) };
3545
};

src/reducer.js

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,10 @@ const initialState = {isVisible: false, message: '' };
55
const behaviors = {
66
[alertTypes.CREATE_ALERT](state, action) {
77
const { alertMessage } = action;
8-
return Object.assign({},
9-
state,
10-
{ isVisible: true, message: alertMessage });
8+
return { isVisible: true, message: alertMessage };
119
},
1210
[alertTypes.DISMISS_ALERT](state, action) {
13-
return Object.assign({},
14-
state,
15-
{ isVisible: false });
11+
return initialState;
1612
}
1713
};
1814

0 commit comments

Comments
 (0)