Skip to content

Commit 45b0434

Browse files
committed
feat:글작성 페이지 쿼리스트링으로 이전편지 가져오기 API연결
1 parent a181914 commit 45b0434

File tree

5 files changed

+40
-7
lines changed

5 files changed

+40
-7
lines changed

src/apis/letterDetail.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import { client } from './client';
2+
3+
const getLetter = async (
4+
letterId: string,
5+
setLetterState: React.Dispatch<React.SetStateAction<LetterDetail | null>>,
6+
) => {
7+
try {
8+
const res = await client.get(`/api/letters/${letterId}`);
9+
setLetterState(res.data.data);
10+
console.log(res);
11+
} catch (error) {
12+
console.error(error);
13+
}
14+
};
15+
16+
export { getLetter };

src/apis/write.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import { client } from './client';
22

3-
const postLetterApi = async (
3+
const postLetter = async (
44
data: LetterRequest,
5-
setState: React.Dispatch<React.SetStateAction<boolean>>,
5+
setState?: React.Dispatch<React.SetStateAction<boolean>>,
66
) => {
77
try {
88
const res = await client.post('/api/letters', data);
9-
setState(true);
9+
if (setState) setState(true);
1010
console.log(res);
1111
} catch (error) {
1212
console.error(error);
@@ -26,4 +26,4 @@ const getPrevLetter = async (
2626
}
2727
};
2828

29-
export { postLetterApi, getPrevLetter };
29+
export { postLetter, getPrevLetter };

src/pages/LetterDetail/index.tsx

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,16 @@
11
import { useEffect, useRef, useState } from 'react';
2+
import { useParams } from 'react-router';
23
import { twMerge } from 'tailwind-merge';
34

5+
import { getLetter } from '@/apis/letterDetail';
46
import { CloudIcon, SirenOutlinedIcon, SnowIcon, ThermostatIcon, WarmIcon } from '@/assets/icons';
57
import ReportModal from '@/components/ReportModal';
68

79
const LetterDetailPage = () => {
10+
const params = useParams();
11+
// 일단 api 받아왔는데 목 데이터의 enum이 잘못 설정되어있어서 데이터 바인딩이 안됨 -> 진영님이 수정해주시면 그때 바인딩 해보기!
12+
const [letterDetail, setLetterDetail] = useState<LetterDetail | null>(null);
13+
814
const DUMMY = {
915
title: '나에게 햄버거 햄부기우기우가 햄북스따스 함부르크 햄버거링고를 대령하거라 ',
1016
text: '이 편지는 영국에서 최초로 시작되어 일년에 한바퀴를 돌면서 받는 사람에게 행운을 주었고 지금은 당신에게로 옮겨진 이 편지는 4일 안에 당신 곁을 떠나야 합니다. 이 편지를 포함해서 7통을 행운이 필요한 사람에게 보내 주셔야 합니다. 복사를 해도 좋습니다. 혹 미신이라 하실지 모르지만 사실입니다.영국에서 HGXWCH이라는 사람은 1930년에 이 편지를 받았습니다. 그는 비서에게 복사해서 보내라고 했습니다. 며칠 뒤에 복권이 당첨되어 20억을 받았습니다. 어떤 이는 이 편지를 받았으나 96시간 이내 자신의 손에서 떠나야 한다는 사실을 잊었습니다. 그는 곧 사직되었습니다. 나중에야 이 사실을 알고 7통의 편지를 보냈는데 다시 좋은 직장을 얻었습니다. 미국의 케네디 대통령은 이 편지를 받았지만 그냥 버렸습니다. 결국 9일 후 그는 암살당했습니다. 기억해 주세요. 이 편지를 보내면 7년의 행운이 있을 것이고 그렇지 않으면 3년의 불행이 있을 것입니다. ',
@@ -29,11 +35,14 @@ const LetterDetailPage = () => {
2935
};
3036
useEffect(() => {
3137
document.body.addEventListener('click', handleOutsideClick);
38+
if (params.id) {
39+
getLetter(params.id, setLetterDetail);
40+
}
3241

3342
return () => {
3443
document.body.removeEventListener('click', handleOutsideClick);
3544
};
36-
}, []);
45+
}, [params.id]);
3746
return (
3847
<>
3948
{reportModalOpen && <ReportModal onClose={() => setReportModalOpen(false)} />}

src/pages/Write/CategorySelect.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { useState } from 'react';
22
import { Link } from 'react-router';
33

4-
import { postLetterApi } from '@/apis/write';
4+
import { postLetter } from '@/apis/write';
55
import PageTitle from '@/components/PageTitle';
66
import useWrite from '@/stores/writeStore';
77

@@ -93,7 +93,7 @@ export default function CategorySelect({
9393
className="bg-primary-3 body-m mt-auto flex h-10 w-full items-center justify-center rounded-lg"
9494
onClick={() => {
9595
if (category) {
96-
postLetterApi(LETTER_REQUEST, setSend);
96+
postLetter(LETTER_REQUEST, setSend);
9797
} else {
9898
alert('우표 선택을 해주세요');
9999
}

src/types/letterDetail.d.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
interface LetterDetail {
2+
letterId: number;
3+
title: string;
4+
content: string;
5+
category: 'CONSOLATION' | 'CELEBRATION' | 'CONSULT' | 'ETC';
6+
paperType: PaperType;
7+
fontType: FontType;
8+
}

0 commit comments

Comments
 (0)