import Telescope from 'meteor/nova:lib'; import React, { PropTypes, Component } from 'react'; import { bindActionCreators } from 'redux'; import { connect } from 'react-redux'; import NovaForm from "meteor/nova:forms"; import { withRouter } from 'react-router' import { graphql } from 'react-apollo'; import gql from 'graphql-tag'; import update from 'immutability-helper'; const CommentsNewFormContainer = (props, context) => { const Component = props.component; return } CommentsNewFormContainer.propTypes = { router: React.PropTypes.object, novaFormMutation: React.PropTypes.func, component: React.PropTypes.func, postId: React.PropTypes.string.isRequired, type: React.PropTypes.string, // "comment" or "reply" parentComment: React.PropTypes.object, // if reply, the comment being replied to parentCommentId: React.PropTypes.string, // if reply topLevelCommentId: React.PropTypes.string, // if reply successCallback: React.PropTypes.func, // a callback to execute when the submission has been successful cancelCallback: React.PropTypes.func, }; CommentsNewFormContainer.displayName = "CommentsNewFormContainer"; const mapStateToProps = state => ({ messages: state.messages }); const mapDispatchToProps = dispatch => bindActionCreators(Telescope.actions.messages, dispatch); const CommentsNewFormContainerWithMutation = graphql(gql` mutation commentsNew($comment: CommentInput) { commentsNew(comment: $comment) { _id } } `, { props: ({ownProps, mutate}) => ({ novaFormMutation: ({document}) => { // const optimisticResponseItem = { // ...document, // title: "optimisitc!", // __typename: 'Post', // id: 123, // slug: 'foo' // } // console.log(document) // console.log(optimisticResponseItem) return mutate({ variables: {post: document}, // optimisticResponse: { // __typename: 'Mutation', // postsNew: optimisticResponseItem, // }, updateQueries: { getPostsView: (prev, { mutationResult }) => { const newPost = mutationResult.data.postsNew; const newList = update(prev, { posts: { $unshift: [newPost], }, postsViewTotal: { $set: prev.postsViewTotal + 1 } }); return newList; }, } }) } }), })(CommentsNewFormContainer); module.exports = withRouter(connect(mapStateToProps, mapDispatchToProps)(CommentsNewFormContainerWithMutation));