Skip to content

Commit dce8d2e

Browse files
committed
feat:편지 상세 페이지 API 데이터바인딩 90%완료(유저 우편번호 데이터 필요)
1 parent 45b0434 commit dce8d2e

File tree

4 files changed

+32
-17
lines changed

4 files changed

+32
-17
lines changed

src/pages/LetterDetail/index.tsx

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,18 @@
11
import { useEffect, useRef, useState } from 'react';
2-
import { useParams } from 'react-router';
2+
import { useNavigate, useParams } from 'react-router';
33
import { twMerge } from 'tailwind-merge';
44

55
import { getLetter } from '@/apis/letterDetail';
66
import { CloudIcon, SirenOutlinedIcon, SnowIcon, ThermostatIcon, WarmIcon } from '@/assets/icons';
77
import ReportModal from '@/components/ReportModal';
8+
import { FONT_TYPE_OBJ, PAPER_TYPE_OBJ } from '../Write/constants';
89

910
const LetterDetailPage = () => {
1011
const params = useParams();
11-
// 일단 api 받아왔는데 목 데이터의 enum이 잘못 설정되어있어서 데이터 바인딩이 안됨 -> 진영님이 수정해주시면 그때 바인딩 해보기!
12+
const navigate = useNavigate();
13+
// 상대방의 우편번호도 데이터에 포함되어야 할 거 같음!!!
1214
const [letterDetail, setLetterDetail] = useState<LetterDetail | null>(null);
1315

14-
const DUMMY = {
15-
title: '나에게 햄버거 햄부기우기우가 햄북스따스 함부르크 햄버거링고를 대령하거라 ',
16-
text: '이 편지는 영국에서 최초로 시작되어 일년에 한바퀴를 돌면서 받는 사람에게 행운을 주었고 지금은 당신에게로 옮겨진 이 편지는 4일 안에 당신 곁을 떠나야 합니다. 이 편지를 포함해서 7통을 행운이 필요한 사람에게 보내 주셔야 합니다. 복사를 해도 좋습니다. 혹 미신이라 하실지 모르지만 사실입니다.영국에서 HGXWCH이라는 사람은 1930년에 이 편지를 받았습니다. 그는 비서에게 복사해서 보내라고 했습니다. 며칠 뒤에 복권이 당첨되어 20억을 받았습니다. 어떤 이는 이 편지를 받았으나 96시간 이내 자신의 손에서 떠나야 한다는 사실을 잊었습니다. 그는 곧 사직되었습니다. 나중에야 이 사실을 알고 7통의 편지를 보냈는데 다시 좋은 직장을 얻었습니다. 미국의 케네디 대통령은 이 편지를 받았지만 그냥 버렸습니다. 결국 9일 후 그는 암살당했습니다. 기억해 주세요. 이 편지를 보내면 7년의 행운이 있을 것이고 그렇지 않으면 3년의 불행이 있을 것입니다. ',
17-
};
18-
const FONT = 'kobyo';
19-
const THEME = 'celebrate';
2016
const DEGREES = [
2117
{ icon: <WarmIcon className="h-5 w-5" />, title: '따뜻해요' },
2218
{ icon: <CloudIcon className="h-5 w-5" />, title: '그럭저럭' },
@@ -46,7 +42,12 @@ const LetterDetailPage = () => {
4642
return (
4743
<>
4844
{reportModalOpen && <ReportModal onClose={() => setReportModalOpen(false)} />}
49-
<div className={twMerge(`flex grow flex-col gap-3 px-5 pb-7.5`, THEME)}>
45+
<div
46+
className={twMerge(
47+
`flex grow flex-col gap-3 px-5 pb-7.5`,
48+
letterDetail && PAPER_TYPE_OBJ[letterDetail.paperType],
49+
)}
50+
>
5051
<div className="absolute top-5 right-5 flex gap-3">
5152
<button
5253
ref={degreeButtonRef}
@@ -86,15 +87,25 @@ const LetterDetailPage = () => {
8687
</div>
8788
<div className="flex flex-col gap-3 px-5">
8889
<span className="body-b mt-[55px]">TO. 따숨이</span>
89-
<span className="body-sb">{DUMMY.title}</span>
90+
<span className="body-sb">{letterDetail?.title}</span>
9091
</div>
9192
<textarea
9293
readOnly
93-
value={DUMMY.text}
94-
className={twMerge(`body-r basic-theme min-h-full w-full grow px-6`, `${FONT}`)}
94+
value={letterDetail?.content}
95+
className={twMerge(
96+
`body-r basic-theme min-h-full w-full grow px-6`,
97+
letterDetail && FONT_TYPE_OBJ[letterDetail.fontType],
98+
)}
9599
></textarea>
96100
<span className="body-sb mt-10 flex justify-end">FROM. {'12E12'}</span>
97-
<button className="bg-primary-3 body-m mt-3 w-full rounded-lg py-2">편지 작성하기</button>
101+
<button
102+
className="bg-primary-3 body-m mt-3 w-full rounded-lg py-2"
103+
onClick={() => {
104+
navigate(`/letter/write/?letterId=${letterDetail?.letterId}`);
105+
}}
106+
>
107+
편지 작성하기
108+
</button>
98109
</div>
99110
</>
100111
);

src/pages/Write/CategorySelect.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ export default function CategorySelect({
9494
onClick={() => {
9595
if (category) {
9696
postLetter(LETTER_REQUEST, setSend);
97+
// setSend(true);
9798
} else {
9899
alert('우표 선택을 해주세요');
99100
}

src/pages/Write/LetterEditor.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { twMerge } from 'tailwind-merge';
44
import useWrite from '@/stores/writeStore';
55

66
import WritePageButton from './components/WritePageButton';
7-
import { FONTS } from './constants';
7+
import { FONT_TYPE_OBJ } from './constants';
88
import OptionSlide from './OptionSlide';
99

1010
export default function LetterEditor({
@@ -73,7 +73,10 @@ export default function LetterEditor({
7373
</div>
7474
<div className="mt-9 flex grow">
7575
<textarea
76-
className={twMerge(`body-r basic-theme min-h-full w-full px-6`, `${FONTS[fontType]}`)}
76+
className={twMerge(
77+
`body-r basic-theme min-h-full w-full px-6`,
78+
`${FONT_TYPE_OBJ[fontType]}`,
79+
)}
7780
placeholder="클릭해서 내용을 작성하세요"
7881
onChange={(e) => {
7982
handleResizeHeight();

src/pages/Write/constants/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ const PAPER_TYPE_OBJ: PaperTypeObj = {
2121
FIELD: 'field',
2222
};
2323

24-
const FONTS = {
24+
const FONT_TYPE_OBJ = {
2525
DEFAULT: 'pretendard',
2626
GYEONGGI: 'batang',
2727
KYOBO: 'kobyo',
@@ -74,4 +74,4 @@ const CATEGORY_STAMPS: CategoryStamps[] = [
7474
{ category: 'ETC', title: '기타', image: etc },
7575
];
7676

77-
export { CATEGORY_LIST, PAPER_TYPE_OBJ, CATEGORYS, CATEGORY_STAMPS, FONT_LIST, FONTS };
77+
export { CATEGORY_LIST, PAPER_TYPE_OBJ, CATEGORYS, CATEGORY_STAMPS, FONT_LIST, FONT_TYPE_OBJ };

0 commit comments

Comments
 (0)