From 0238b0efb9b2dc449ffc41e26b9a34a3f2410c47 Mon Sep 17 00:00:00 2001 From: Roman Date: Mon, 19 Feb 2018 20:17:26 +0200 Subject: [PATCH 1/3] Initial commit --- README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..3a8340b --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# basic-react-1902 \ No newline at end of file From 468a48c8bd65f583857a49e0d431a31dfd3114f5 Mon Sep 17 00:00:00 2001 From: jekahm Date: Sun, 11 Mar 2018 06:10:24 +0300 Subject: [PATCH 2/3] Home work #4. --- package.json | 2 + src/AC/index.js | 25 +++++++- src/components/add-new-comment-form.js | 79 ++++++++++++++++++++++++++ src/components/article-list/index.js | 30 +++++----- src/components/article/index.js | 18 +++--- src/components/comment-list/index.js | 8 ++- src/components/filters/select.js | 14 ++--- src/constants/index.js | 11 ++-- src/middlewares/handle-new-comment.js | 16 ++++++ src/reducer/articles.js | 29 ++++++++-- src/reducer/comments.js | 16 ++++-- src/selectors/index.js | 32 ++++++----- src/store/index.js | 16 +++--- yarn.lock | 20 +++++++ 14 files changed, 246 insertions(+), 70 deletions(-) create mode 100644 src/components/add-new-comment-form.js create mode 100644 src/middlewares/handle-new-comment.js diff --git a/package.json b/package.json index d2d8832..84f3b98 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,7 @@ "enzyme": "^3.3.0", "enzyme-adapter-react-16": "^1.1.1", "prop-types": "^15.6.0", + "randomstring": "^1.1.5", "react": "^16.2.0", "react-addons-css-transition-group": "^15.6.2", "react-day-picker": "^7.0.7", @@ -14,6 +15,7 @@ "react-scripts": "1.1.1", "react-select": "^1.2.1", "redux": "^3.7.2", + "redux-logger": "^3.0.6", "reselect": "^3.0.1" }, "scripts": { diff --git a/src/AC/index.js b/src/AC/index.js index dda2dd6..3ac8041 100644 --- a/src/AC/index.js +++ b/src/AC/index.js @@ -1,4 +1,7 @@ -import {INCREMENT, DELETE_ARTICLE, CHANGE_DATE_RANGE, CHANGE_SELECTION} from '../constants' +import { + INCREMENT, DELETE_ARTICLE, CHANGE_DATE_RANGE, CHANGE_SELECTION, ADD_NEW_COMMENT, + UPDATE_ARTICLE_COMMENTS +} from '../constants' export function increment() { return { @@ -26,3 +29,23 @@ export function changeSelection(selected) { payload: { selected } } } + +export function addNewComment(user, text, articleId) { + return { + type: ADD_NEW_COMMENT, + payload: { + data: {user, text}, + articleId + } + }; +} + +export function updateArticleComments(articleId, commentId) { + return { + type: UPDATE_ARTICLE_COMMENTS, + payload: { + articleId, + commentId + } + } +} diff --git a/src/components/add-new-comment-form.js b/src/components/add-new-comment-form.js new file mode 100644 index 0000000..942c0fc --- /dev/null +++ b/src/components/add-new-comment-form.js @@ -0,0 +1,79 @@ +import React, {Component} from 'react'; +import PropTypes from 'prop-types'; +import { connect } from 'react-redux'; +import { addNewComment } from '../AC'; + +class AddNewCommentForm extends Component { + + state = { + userName: '', + text: '' + }; + + static propTypes = { + articleId: PropTypes.string.isRequired, + addComment: PropTypes.func.isRequired + }; + + static defaultProps = {}; + + handleSubmit = (e) => { + e.preventDefault(); + this.props.addComment(this.state.userName, this.state.text, this.props.articleId); + this.setState({ + userName: '', + text: '' + }) + }; + + handleUsernameInput = (e) => { + this.setState({ + userName: e.target.value + }); + }; + + handleTextInput = (e) => { + this.setState({ + text: e.target.value + }); + }; + + render() { + return ( +
+
+
+
+ +

+
+
+
+