1- import { useRef } from 'react' ;
1+ import { useEffect , useState } from 'react' ;
2+ import { useLocation } from 'react-router' ;
23import { twMerge } from 'tailwind-merge' ;
34
5+ import { postLetter } from '@/apis/write' ;
46import BackButton from '@/components/BackButton' ;
57import WritePageButton from '@/pages/Write/components/WritePageButton' ;
68import { FONT_TYPE_OBJ } from '@/pages/Write/constants' ;
@@ -10,26 +12,35 @@ import useWrite from '@/stores/writeStore';
1012export default function LetterEditor ( {
1113 setStep,
1214 prevLetter,
15+ setSend,
16+ searchParams,
1317} : {
1418 setStep : React . Dispatch < React . SetStateAction < Step > > ;
1519 prevLetter : PrevLetter [ ] ;
20+ setSend : React . Dispatch < React . SetStateAction < boolean > > ;
21+ searchParams : URLSearchParams ;
1622} ) {
17- const textareaRef = useRef < HTMLTextAreaElement | null > ( null ) ;
23+ const location = useLocation ( ) ;
24+ const [ randomMatched , setRandomMatched ] = useState < boolean > ( false ) ;
1825
19- const fontType = useWrite ( ( state ) => state . fontType ) ;
26+ const letterRequest = useWrite ( ( state ) => state . letterRequest ) ;
27+ const setLetterRequest = useWrite ( ( state ) => state . setLetterRequest ) ;
2028
21- const letterTitle = useWrite ( ( state ) => state . letterTitle ) ;
22- const setLetterTitle = useWrite ( ( state ) => state . setLetterTitle ) ;
23-
24- const letterText = useWrite ( ( state ) => state . letterText ) ;
25- const setLetterText = useWrite ( ( state ) => state . setLetterText ) ;
29+ useEffect ( ( ) => {
30+ if ( location . state ?. randomMatched ) {
31+ setRandomMatched ( true ) ;
32+ }
33+ } , [ location . state ?. randomMatched ] ) ;
2634
27- const handleResizeHeight = ( ) => {
28- if ( textareaRef . current !== null ) {
29- textareaRef . current . style . height = 'auto' ; //height 초기화
30- textareaRef . current . style . height = `${ textareaRef . current . scrollHeight } px` ;
35+ useEffect ( ( ) => {
36+ if ( prevLetter . length > 0 ) {
37+ setLetterRequest ( {
38+ receiverId : prevLetter [ 0 ] . memberId ,
39+ parentLetterId : Number ( searchParams . get ( 'letterId' ) ) ,
40+ category : prevLetter [ 0 ] . category ,
41+ } ) ;
3142 }
32- } ;
43+ } , [ prevLetter , searchParams , setLetterRequest ] ) ;
3344
3445 return (
3546 < div className = "flex grow flex-col pb-15" >
@@ -40,8 +51,17 @@ export default function LetterEditor({
4051 < WritePageButton
4152 text = "답장 전송"
4253 onClick = { ( ) => {
43- if ( letterTitle . trim ( ) !== '' && letterText . trim ( ) !== '' ) {
44- setStep ( 'category' ) ;
54+ if ( letterRequest . title . trim ( ) !== '' && letterRequest . content . trim ( ) !== '' ) {
55+ if ( randomMatched ) {
56+ console . log ( '랜덤편지 답장 전송용API' ) ;
57+ } else {
58+ postLetter ( letterRequest , ( ) => {
59+ console . log ( letterRequest ) ;
60+ console . log ( prevLetter ) ;
61+ setSend ( true ) ;
62+ setStep ( 'category' ) ;
63+ } ) ;
64+ }
4565 } else {
4666 alert ( '편지 제목, 내용이 작성되었는지 확인해주세요' ) ;
4767 }
@@ -51,7 +71,7 @@ export default function LetterEditor({
5171 < WritePageButton
5272 text = "다음 단계"
5373 onClick = { ( ) => {
54- if ( letterTitle . trim ( ) !== '' && letterText . trim ( ) !== '' ) {
74+ if ( letterRequest . title . trim ( ) !== '' && letterRequest . content . trim ( ) !== '' ) {
5575 setStep ( 'category' ) ;
5676 } else {
5777 alert ( '편지 제목, 내용이 작성되었는지 확인해주세요' ) ;
@@ -67,23 +87,22 @@ export default function LetterEditor({
6787 placeholder = "제목을 입력해주세요."
6888 className = "body-sb placeholder:text-gray-40 placeholder:border-0"
6989 onChange = { ( e ) => {
70- setLetterTitle ( e . target . value ) ;
90+ setLetterRequest ( { title : e . target . value } ) ;
7191 } }
72- value = { letterTitle }
92+ value = { letterRequest . title }
7393 />
7494 </ div >
7595 < div className = "mt-9 flex grow" >
7696 < textarea
7797 className = { twMerge (
7898 `body-r basic-theme min-h-full w-full px-6` ,
79- `${ FONT_TYPE_OBJ [ fontType ] } ` ,
99+ `${ FONT_TYPE_OBJ [ letterRequest . fontType ] } ` ,
80100 ) }
81101 placeholder = "클릭해서 내용을 작성하세요"
82102 onChange = { ( e ) => {
83- handleResizeHeight ( ) ;
84- setLetterText ( e . target . value ) ;
103+ setLetterRequest ( { ...letterRequest , content : e . target . value } ) ;
85104 } }
86- value = { letterText }
105+ value = { letterRequest . content }
87106 > </ textarea >
88107 </ div >
89108 </ div >
0 commit comments