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

51 lines
1.4 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';
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.context.currentUser, 'newsletter_subscribeToNewsletter', false) ?
2016-05-26 10:46:30 +02:00
'newsletter.removeUser' : 'newsletter.addUser';
Meteor.call(action, this.context.currentUser, (error, result) => {
2016-05-26 10:46:30 +02:00
if (error) {
console.log(error);
this.context.messages.flash(error.message, "error");
2016-05-26 10:46:30 +02:00
} else {
this.props.successCallback(result);
}
});
}
render() {
const isSubscribed = Users.getSetting(this.context.currentUser, '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 = {
2016-06-09 20:26:33 +09:00
successCallback: React.PropTypes.func.isRequired
};
NewsletterButton.contextTypes = {
currentUser: React.PropTypes.object,
messages: React.PropTypes.object
}
module.exports = NewsletterButton;
export default NewsletterButton;