import React, { PropTypes, Component } from 'react'; import Formsy from 'formsy-react'; import FRC from 'formsy-react-components'; import Actions from "../actions.js"; import { Button } from 'react-bootstrap'; import Cookie from 'js-cookie'; import { Messages } from "meteor/nova:core"; const Input = FRC.Input; class Newsletter extends Component { constructor(props, context) { super(props); this.subscribeEmail = this.subscribeEmail.bind(this); this.subscribeUser = this.subscribeUser.bind(this); this.dismissBanner = this.dismissBanner.bind(this); const showBanner = !(Meteor.isClient && Cookie.get('showBanner') === "no") && !Users.getSetting(context.currentUser, 'newsletter_subscribeToNewsletter', false); this.state = { showBanner: showBanner }; } subscribeEmail(data) { Actions.call("addEmailToMailChimpList", data.email, (error, result) => { if (error) { console.log(error) Messages.flash(error.message, "error"); } else { Messages.flash(this.props.successMessage, "success"); this.dismissBanner(); } }); } subscribeUser() { Actions.call("addCurrentUserToMailChimpList", (error, result) => { if (error) { console.log(error) Messages.flash(error.message, "error"); } else { Messages.flash(this.props.successMessage, "success"); this.dismissBanner(); } }); } dismissBanner(e) { if (e && e.preventDefault) e.preventDefault(); this.setState({showBanner: false}); if(this.context.currentUser){ // if user is connected, change setting in their account Users.setSetting(this.context.currentUser, 'newsletter_subscribeToNewsletter', false); }else{ // set cookie Cookie.set('showBanner', "no"); } } renderForm() { return ( ) } renderButton() { return ( ) } render() { const currentUser = this.context.currentUser; if (this.state.showBanner) { return (

{this.props.headerText}

{this.context.currentUser ? this.renderButton() : this.renderForm()}
); } else { return null; } } } Newsletter.propTypes = { headerText: React.PropTypes.string, labelText: React.PropTypes.string, buttonText: React.PropTypes.string, successMessage: React.PropTypes.string } Newsletter.defaultProps = { headerText: "Subscribe to the newsletter", labelText: "Your Email", buttonText: "Subscribe", successMessage: "Thanks for subscribing!" }; Newsletter.contextTypes = { currentUser: React.PropTypes.object }; module.exports = Newsletter; export default Newsletter;