@@ -6,27 +6,28 @@ import {
66 SharePost ,
77 getSharePostLikeCount ,
88 postSharePostLike ,
9+ deleteSharePost ,
910} from '@/apis/share' ;
1011import ReportModal from '@/components/ReportModal' ;
1112
1213import Header from './components/Header' ;
1314import Letter from './components/Letter' ;
14- import { useParams } from 'react-router' ;
15+
16+ import { useNavigate , useParams } from 'react-router' ;
1517import useAuthStore from '@/stores/authStore' ;
18+ import useToastStore from '@/stores/toastStore' ;
1619
1720const LetterBoardDetailPage = ( ) => {
1821 const [ likeCount , setLikeCount ] = useState ( 0 ) ;
1922 const [ isLike , setIsLike ] = useState ( false ) ;
2023 const [ isWriter , setIsWriter ] = useState ( false ) ;
2124 const [ postDetail , setPostDetail ] = useState < SharePost > ( ) ;
2225 const [ activeReportModal , setActiveReportModal ] = useState ( false ) ;
23- // const location = useLocation();
24- // const sharePostId: string = location.pathname.split('/')[3];
25- // const isShareLetterPreview = location.state?.isShareLetterPreview || false;
2626
2727 const { id } = useParams ( ) ;
28-
2928 const myZipCode = useAuthStore . getState ( ) . zipCode ;
29+ const setToastActive = useToastStore ( ( state ) => state . setToastActive ) ;
30+ const navigate = useNavigate ( ) ;
3031
3132 const postLike = async ( sharePostId : string ) => {
3233 try {
@@ -35,7 +36,6 @@ const LetterBoardDetailPage = () => {
3536 console . log ( '✅ 편지 좋아요 추가됨:' , response ) ;
3637 } catch ( error ) {
3738 console . error ( '❌ 편지 좋아요 추가 중 에러가 발생했습니다' , error ) ;
38- throw new Error ( '편지 좋아요 추가 실패' ) ;
3939 }
4040 } ;
4141
@@ -48,6 +48,26 @@ const LetterBoardDetailPage = () => {
4848 postLike ( sharePostId ) ;
4949 } ;
5050
51+ const handleDeleteLetter = async ( ) => {
52+ try {
53+ if ( id ) {
54+ const response = await deleteSharePost ( id ) ;
55+ if ( ! response ) throw new Error ( 'deleteSharePost: no response' ) ;
56+ navigate ( - 1 ) ;
57+ setToastActive ( {
58+ toastType : 'Success' ,
59+ title : '게시물 삭제 완료' ,
60+ } ) ;
61+ } else throw new Error ( 'deleteSharePost: id 값을 조회할 수 없습니다.' ) ;
62+ } catch ( error ) {
63+ console . error ( error ) ;
64+ setToastActive ( {
65+ toastType : 'Error' ,
66+ title : '삭제 실패했습니다. 다시 시도해주세요.' ,
67+ } ) ;
68+ }
69+ } ;
70+
5171 useEffect ( ( ) => {
5272 const fetchPostDetail = async ( postId : string ) => {
5373 try {
@@ -100,12 +120,13 @@ const LetterBoardDetailPage = () => {
100120 isWriter = { isWriter }
101121 onToggleLike = { ( ) => ( id ? handleToggleLike ( id ) : handleToggleLike ( 'error' ) ) }
102122 onOpenReportModal = { ( ) => setActiveReportModal ( true ) }
123+ onDeleteLetter = { ( ) => handleDeleteLetter ( ) }
103124 />
104125 < main className = "px-5 pt-18 pb-3" >
105126 < p className = "body-b mb-6 px-5" > FROM. { postDetail ?. zipCode } </ p >
106127 < p
107128 className = { twMerge (
108- 'body-r bg-[repeating-linear-gradient(transparent,transparent_25px,#ffe6e3_26px)] px-5 whitespace-pre-wrap' ,
129+ 'body-r bg-[repeating-linear-gradient(transparent,transparent_25px,#ffe6e3_26px)] px-5 break-all whitespace-pre-wrap' ,
109130 'leading-[26px]' ,
110131 ) }
111132 >
0 commit comments