// Generated with util/create-component.js import React, { useEffect, useState } from "react"; import NsImage from "../shared/ns-image"; import { Caret, HeartDefault, HeartPressed } from "../UI/Icon"; import Text from "../UI/Text"; import { CommentProps, ICommentData } from "./Comment.types"; const Comment: React.FC = (props) => { const { data, isMine = false, isLoginedUser = false, isAdminUser = false, } = props; const [showAnswerComments, setShowAnswerComments] = useState(false); const [showMoreComment, setShowMoreComment] = useState(false); return (
{showAnswerComments && data.answerComments.map((comment, index) => { return ( ); })}
); }; export default Comment; const CommnetBox = (props: { index?: number; type: "comment" | "answerComment"; data: ICommentData; isMine: boolean; isLoginedUser: boolean; isAdminUser: boolean; showAnswerComments?: boolean; setShowAnswerComments?: (showAnswerComments: boolean) => void; showMoreComment?: boolean; setShowMoreComment?: (showMoreComment: boolean) => void; }) => { const { index = 0, type, data, isMine, isLoginedUser, isAdminUser, showAnswerComments, setShowAnswerComments, showMoreComment, setShowMoreComment, } = props; const { id, user, content, likeStatus, createdAt, answerCommentsCount, onLikeComment, onReplyComment, onDeleteComment, onEditComment, } = data; const summaryContent = content.substring(0, 150); const [showAllContent, setShowAllContent] = useState(false); const [isLiked, setIsLiked] = useState(likeStatus); const onLikeStatus = (likeStatus: boolean) => { setIsLiked(likeStatus); }; useEffect(() => { onLikeStatus(likeStatus); }, [likeStatus]); return ( <>
2 && !showMoreComment && "hidden"}`} >
{user.nickName}
{isMine && (
{ onDeleteComment && onDeleteComment(); }} > 삭제
{ onEditComment && onEditComment(); }} > 수정
)} {!isMine && isAdminUser && (
{ onDeleteComment && onDeleteComment(); }} > 삭제
)}
{ setShowAllContent(true); }} >

{!showAllContent && type === "comment" ? summaryContent : content} {!showAllContent && type === "comment" && ( ...더보기 )}

{createdAt.substring(0, 10).replace(/-/g, ".")}

{isLoginedUser && ( <>
)}
{type === "comment" && answerCommentsCount > 0 && (
{ setShowAnswerComments && setShowAnswerComments(!showAnswerComments); }} >
답글 {answerCommentsCount}개 {showAnswerComments ? " 접기" : " 더보기"}
)}
{/* 답글이 3개 이상일 경우 답글 더보기 기능 제공 */} {index === 2 && !showMoreComment && ( )} ); };