Files
astuto/app/javascript/containers/Comments.tsx
2022-06-22 10:17:42 +02:00

77 lines
2.1 KiB
TypeScript

import { connect } from 'react-redux';
import { requestComments } from '../actions/Comment/requestComments';
import {
toggleCommentReply,
setCommentReplyBody,
toggleCommentIsPostUpdateFlag,
} from '../actions/Comment/handleCommentReplies';
import { submitComment } from '../actions/Comment/submitComment';
import { updateComment } from '../actions/Comment/updateComment';
import { deleteComment } from '../actions/Comment/deleteComment';
import { State } from '../reducers/rootReducer';
import CommentsP from '../components/Comments/CommentsP';
import HttpStatus from '../constants/http_status';
const mapStateToProps = (state: State) => ({
comments: state.currentPost.comments.items,
replyForms: state.currentPost.comments.replyForms,
areLoading: state.currentPost.comments.areLoading,
error: state.currentPost.comments.error,
});
const mapDispatchToProps = (dispatch) => ({
requestComments(postId: number) {
dispatch(requestComments(postId));
},
toggleCommentReply(commentId: number) {
dispatch(toggleCommentReply(commentId));
},
setCommentReplyBody(commentId: number, body: string) {
dispatch(setCommentReplyBody(commentId, body));
},
toggleCommentIsPostUpdateFlag() {
dispatch(toggleCommentIsPostUpdateFlag(null));
},
submitComment(
postId: number,
body: string,
parentId: number,
isPostUpdate: boolean,
authenticityToken: string,
) {
dispatch(submitComment(postId, body, parentId, isPostUpdate, authenticityToken));
},
updateComment(
postId: number,
commentId: number,
body: string,
isPostUpdate: boolean,
onSuccess: Function,
authenticityToken: string,
) {
dispatch(updateComment(postId, commentId, body, isPostUpdate, authenticityToken)).then(res => {
if (res && res.status === HttpStatus.OK) onSuccess();
});
},
deleteComment(
postId: number,
commentId: number,
authenticityToken: string,
) {
dispatch(deleteComment(postId, commentId, authenticityToken));
},
});
export default connect(
mapStateToProps,
mapDispatchToProps,
)(CommentsP);