Vulcan/packages/nova-base-components/lib/common/NewsletterButton.jsx

57 lines
1.8 KiB
React
Raw Normal View History

import React, { PropTypes, Component } from 'react';
2016-06-09 20:26:33 +09:00
import { FormattedMessage } from 'react-intl';
import { Button } from 'react-bootstrap';
import { Messages } from 'meteor/nova:core';
2016-06-23 15:00:58 +09:00
import Users from 'meteor/nova:users';
import { bindActionCreators } from 'redux';
import { connect } from 'react-redux';
class NewsletterButton extends Component {
constructor(props) {
super(props);
this.subscriptionAction = this.subscriptionAction.bind(this);
}
2016-05-26 10:46:30 +02:00
subscriptionAction() {
const action = Users.getSetting(this.props.user, 'newsletter_subscribeToNewsletter', false) ?
2016-05-26 10:46:30 +02:00
'newsletter.removeUser' : 'newsletter.addUser';
this.context.actions.call(action, this.props.user, (error, result) => {
2016-05-26 10:46:30 +02:00
if (error) {
console.log(error);
this.props.flash(error.message, "error");
2016-05-26 10:46:30 +02:00
} else {
this.props.successCallback(result);
}
});
}
render() {
const isSubscribed = Users.getSetting(this.props.user, 'newsletter_subscribeToNewsletter', false);
return (
<Button
className="newsletter-button"
2016-05-26 10:46:30 +02:00
onClick={this.subscriptionAction}
bsStyle="primary"
>
2016-06-09 20:26:33 +09:00
{isSubscribed ? <FormattedMessage id="newsletter.unsubscribe"/> : <FormattedMessage id="newsletter.subscribe"/>}
</Button>
)
}
}
NewsletterButton.propTypes = {
successCallback: React.PropTypes.func.isRequired,
user: React.PropTypes.object.isRequired,
};
NewsletterButton.contextTypes = {
actions: React.PropTypes.object,
2016-11-15 18:33:16 +01:00
};
const mapStateToProps = state => ({ messages: state.messages, });
const mapDispatchToProps = dispatch => bindActionCreators(Telescope.actions.messages, dispatch);
module.exports = connect(mapStateToProps, mapDispatchToProps)(NewsletterButton);
export default connect(mapStateToProps, mapDispatchToProps)(NewsletterButton);