// /* // This component wraps FormWrapper with a mutation that submits the form. // The mutation can either be one that inserts a new document, or one // that updates an existing document. // */ // import Telescope from 'meteor/nova:lib'; // import React, { PropTypes, Component } from 'react'; // import { bindActionCreators } from 'redux'; // import { connect } from 'react-redux'; // import { graphql } from 'react-apollo'; // import gql from 'graphql-tag'; // import update from 'immutability-helper'; // import FormWrapper from './FormWrapper.jsx'; // // const mapStateToProps = state => ({ messages: state.messages }); // // const mapDispatchToProps = dispatch => bindActionCreators(Telescope.actions.messages, dispatch); // const FormWithMutation = props => { // let ComponentWithMutation; // const collectionName = props.collection._name; // // create new component by wrapping FormWrapper with mutation // if (props.document) { // // edit document mutation // ComponentWithMutation = graphql(gql` // mutation ${props.mutationName}($documentId: String, $set: ${collectionName}Input, $unset: ${collectionName}Unset) { // ${props.mutationName}(documentId: $documentId, set: $set, unset: $unset) { // ${props.fragment ? `...${props.fragment[0].name.value}` : props.resultQuery} // } // } // `, { // options: (props) => props.fragment ? {fragments: props.fragment} : {}, // props: ({ownProps, mutate}) => ({ // mutation: ({documentId, set, unset}) => { // return mutate({ // variables: {documentId: documentId, set, unset} // }) // } // }), // })(FormWrapper); // } else { // // new document mutation // ComponentWithMutation = graphql(gql` // mutation ${props.mutationName}($document: ${collectionName}Input) { // ${props.mutationName}(document: $document) { // ${props.fragment ? `...${props.fragment[0].name.value}` : props.resultQuery} // } // } // `, { // options: (props) => props.fragment ? {fragments: props.fragment} : {}, // props: ({ownProps, mutate}) => ({ // mutation: ({document}) => { // return mutate({ // variables: {document: document}, // updateQueries: props.updateQueries // needed for new document form only // }) // } // }), // })(FormWrapper); // } // const {mutationName, updateQueries, ...rest} = props; // return // }; // FormWithMutation.propTypes = { // // main options // collection: React.PropTypes.object, // document: React.PropTypes.object, // if a document is passed, this will be an edit form // schema: React.PropTypes.object, // usually not needed // // graphQL // mutationName: React.PropTypes.string, // the mutation name // resultQuery: React.PropTypes.string, // the results to get back // updateQueries: React.PropTypes.object, // how to update queries // // form // labelFunction: React.PropTypes.func, // prefilledProps: React.PropTypes.object, // layout: React.PropTypes.string, // fields: React.PropTypes.arrayOf(React.PropTypes.string), // // callbacks // submitCallback: React.PropTypes.func, // successCallback: React.PropTypes.func, // errorCallback: React.PropTypes.func, // cancelCallback: React.PropTypes.func, // } // module.exports = FormWithMutation;