import React, { useState } from "react" import { Avatar, Divider, Flex, Heading, HStack, IconButton, Text, VStack, chakra, Menu, MenuButton, MenuList, MenuItem, Box } from "@chakra-ui/react" import { Comment } from "src/types/comments" import Card from "components/card" import { getUserName } from "utils/user" import moment from 'moment' import { MarkdownRender } from "components/markdown-editor/render" import HeartLike from "components/posts/heart-like" import { FaRegEdit, FaRegFlag, FaRegTrashAlt, FaReply, FaTrash } from "react-icons/fa" import { User } from "src/types/session" import CommentEditor from "./editor" import { requestApi } from "utils/axios/request" import Reply from "./reply" interface Props { user: User comment: Comment onChange: any } export const CommentCard = (props: Props) => { const { comment, user, onChange} = props const [editorVisible, setEditorVisible] = useState(false) const [replyVisible,setReplyVisible] = useState(false) const [reply,setReply] = useState('') const submitReply = async (md) => { await requestApi.post('/story/comment',{targetID: comment.id, md: md}) setReplyVisible(false); } const changeComment = async (md) => { await requestApi.post('/story/comment',{...comment, md}) setEditorVisible(false) onChange() } const deleteComment = async id => { await requestApi.delete(`/comment/${id}`) onChange() } const likeComment = async (id) => { await requestApi.post(`/story/like/${id}`) onChange() } return ( <>{ editorVisible ? (user && {setEditorVisible(false);changeComment(md)}} onCancel={() => setEditorVisible(false)} />) : {getUserName(comment.creator)} about this user {moment(comment.created).fromNow()} likeComment(comment.id)} /> {user && } onClick={() => setReplyVisible(!replyVisible)} fontSize="20px" />} } _hover={null} _active={null} /> {user && setEditorVisible(true)}>Edit} {user && deleteComment(comment.id)}>Delete} Report {replyVisible && {submitReply(md)}} onCancel={() => setReplyVisible(false)} />} {comment.replies.map(reply => )} } ) } export default CommentCard