Skip to content

Commit 30aa2e5

Browse files
committed
refctor: 코드 리뷰 피드백 반영
1 parent ce0b132 commit 30aa2e5

15 files changed

Lines changed: 44 additions & 75 deletions

File tree

src/apis/notice/postFestivalNotice.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { apiInstance } from '@/apis/apiInstance';
2-
import type { NoticeCreateRequest } from '@/types/Notice';
2+
import type { NoticeRequest } from '@/types/Notice';
33
import API_ENDPOINTS from '@/constants/apiEndpoints';
44
import type { AxiosResponse } from 'axios';
55
import { generatePath } from 'react-router-dom';
@@ -13,7 +13,7 @@ import { generatePath } from 'react-router-dom';
1313
*/
1414
export const postFestivalNotice = async (
1515
festivalId: string,
16-
noticeData: NoticeCreateRequest,
16+
noticeData: NoticeRequest,
1717
): Promise<AxiosResponse<void>> => {
1818
return await apiInstance.post<void>(
1919
generatePath(API_ENDPOINTS.FESTIVAL_NOTICE, { festivalId }),

src/apis/notice/putFestivalNotice.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { apiInstance } from '@/apis/apiInstance';
22
import API_ENDPOINTS from '@/constants/apiEndpoints';
33
import { generatePath } from 'react-router-dom';
44
import type { AxiosResponse } from 'axios';
5-
import type { NoticeUpdateRequest } from '@/types/Notice';
5+
import type { NoticeRequest } from '@/types/Notice';
66

77
/**
88
* 축제 공지사항 수정을 위한 API 함수입니다.
@@ -12,7 +12,7 @@ import type { NoticeUpdateRequest } from '@/types/Notice';
1212
*/
1313
export const putFestivalNotice = async (
1414
id: string,
15-
body: NoticeUpdateRequest,
15+
body: NoticeRequest,
1616
): Promise<AxiosResponse<void>> => {
1717
return await apiInstance.put<void>(
1818
generatePath(API_ENDPOINTS.FESTIVAL_NOTICE_DETAIL, { id }),

src/apis/review/deleteReview.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { apiInstance } from '@/apis/apiInstance';
22
import API_ENDPOINTS from '@/constants/apiEndpoints';
3+
import { generatePath } from 'react-router-dom';
34

45
/**
56
* 리뷰 삭제를 위한 함수
@@ -8,7 +9,7 @@ import API_ENDPOINTS from '@/constants/apiEndpoints';
89
*/
910
export const deleteReview = async (reviewId: number) => {
1011
const response = await apiInstance.delete(
11-
API_ENDPOINTS.REVIEW_DELETE.replace(':reviewId', reviewId.toString()),
12+
generatePath(API_ENDPOINTS.REVIEW_BY_ID, { reviewId: reviewId.toString() }),
1213
);
1314
return response.data;
1415
};

src/apis/review/getSingleReview.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ export const getSingleReview = async (
1010
reviewId: number,
1111
): Promise<AxiosResponse<ApiResponseItem<Review>, ApiErrorResponse>> => {
1212
return await apiInstance.get<ApiResponseItem<Review>>(
13-
generatePath(API_ENDPOINTS.REVIEW_SINGLE, { reviewId: reviewId.toString() }),
13+
generatePath(API_ENDPOINTS.REVIEW_BY_ID, { reviewId: reviewId.toString() }),
1414
);
1515
};
1616

src/apis/review/putReview.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { apiInstance } from '@/apis/apiInstance';
22
import API_ENDPOINTS from '@/constants/apiEndpoints';
33
import type { MediaInfo } from '@/types/Media/MediaInfo';
4+
import { generatePath } from 'react-router-dom';
45

56
export interface ReviewUpdateRequest {
67
content: string;
@@ -11,7 +12,7 @@ export interface ReviewUpdateRequest {
1112

1213
export const putReview = async (reviewId: number, body: ReviewUpdateRequest) => {
1314
return await apiInstance.put(
14-
API_ENDPOINTS.REVIEW_UPDATE.replace(':reviewId', reviewId.toString()),
15+
generatePath(API_ENDPOINTS.REVIEW_BY_ID, { reviewId: reviewId.toString() }),
1516
body,
1617
);
1718
};

src/components/form/TextInputWithCounter.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ interface TextInputWithCounterProps {
1111
showMinLengthMessage?: boolean;
1212
minLengthMessage?: string;
1313
errorClassName?: string;
14+
name?: string;
1415
}
1516
/**
1617
* TextInputWithCounter 컴포넌트
@@ -37,6 +38,7 @@ const TextInputWithCounter = ({
3738
rows = 1,
3839
showMinLengthMessage = false,
3940
errorClassName = 'text-red-500',
41+
name,
4042
}: TextInputWithCounterProps) => {
4143
const isMinLengthError = minLength && value.length < minLength;
4244
const isMaxLengthError = value.length > maxLength;
@@ -45,6 +47,7 @@ const TextInputWithCounter = ({
4547
<div className="mb-4">
4648
{type === 'input' ? (
4749
<input
50+
name={name}
4851
type="text"
4952
value={value}
5053
onChange={onChange}
@@ -55,6 +58,7 @@ const TextInputWithCounter = ({
5558
/>
5659
) : (
5760
<textarea
61+
name={name}
5862
value={value}
5963
onChange={onChange}
6064
placeholder={placeholder}

src/constants/apiEndpoints.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,8 @@ const API_ENDPOINTS = {
2525
DELETE_USER: '/api/users',
2626
// 내가 작성한 리뷰
2727
MY_REVIEWS: '/api/reviews/my',
28-
// 리뷰 삭제
29-
REVIEW_DELETE: '/api/reviews/:reviewId',
30-
// 리뷰 수정
31-
REVIEW_UPDATE: '/api/reviews/:reviewId',
32-
// 리뷰 단건 조회
33-
REVIEW_SINGLE: '/api/reviews/:reviewId',
28+
// 리뷰 (조회/수정/삭제)
29+
REVIEW_BY_ID: '/api/reviews/:reviewId',
3430
// 미디어 업로드
3531
PRESIGNED_URL: '/api/presigned-url',
3632
// 축제 관리자 신청

src/pages/FestivalInfoNoticeCreate/components/FestivalInfoNoticeForm.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { generatePath } from 'react-router-dom';
22
import { useMutation } from '@tanstack/react-query';
33
import { postFestivalNotice } from '@/apis/notice/postFestivalNotice';
44
import FormSubmitButtons from '@/components/common/FormSubmitButtons';
5-
import type { NoticeCreateRequest } from '@/types/Notice';
5+
import type { NoticeRequest } from '@/types/Notice';
66
import FestivalInfoNoticeRuleCard from '@/pages/FestivalInfoNoticeCreate/components/FestivalInfoNoticeRuleCard';
77
import useNav from '@/hooks/useNav';
88
import { useMediaUpload } from '@/hooks/useMediaUpload';
@@ -33,7 +33,7 @@ const FestivalInfoNoticeForm = ({ festivalData }: { festivalData: FestivalInfo }
3333
});
3434

3535
const { mutate: submitApplication, isPending } = useMutation({
36-
mutationFn: (body: NoticeCreateRequest) => postFestivalNotice(festivalData.id.toString(), body),
36+
mutationFn: (body: NoticeRequest) => postFestivalNotice(festivalData.id.toString(), body),
3737
onSuccess: () => {
3838
queryClient.invalidateQueries({ queryKey: ['festival-notices'] });
3939
showToastSuccessMessage('공지사항이 작성되었습니다.');

src/pages/FestivalInfoNoticeEdit/components/FestivalInfoNoticeEditForm.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { generatePath, useNavigate } from 'react-router-dom';
22
import { useMutation } from '@tanstack/react-query';
33
import { putFestivalNotice } from '@/apis/notice/putFestivalNotice';
44
import FormSubmitButtons from '@/components/common/FormSubmitButtons';
5-
import type { NoticeUpdateRequest } from '@/types/Notice';
5+
import type { NoticeRequest } from '@/types/Notice';
66
import FestivalInfoNoticeRuleCard from '@/pages/FestivalInfoNoticeCreate/components/FestivalInfoNoticeRuleCard';
77
import useNav from '@/hooks/useNav';
88
import { useMediaUpload } from '@/hooks/useMediaUpload';
@@ -57,7 +57,7 @@ const FestivalInfoNoticeEditForm = ({
5757
}, [noticeData.images, setImageInfos]);
5858

5959
const { mutate: submitApplication, isPending } = useMutation({
60-
mutationFn: (body: NoticeUpdateRequest) => putFestivalNotice(noticeId, body),
60+
mutationFn: (body: NoticeRequest) => putFestivalNotice(noticeId, body),
6161
onSuccess: () => {
6262
// 관련 쿼리들 무효화
6363
queryClient.invalidateQueries({ queryKey: ['festival-notices'] });
@@ -100,6 +100,7 @@ const FestivalInfoNoticeEditForm = ({
100100
<h3 className="font-semibold mb-3">아래 빈칸을 모두 작성해주세요.</h3>
101101

102102
<TextInputWithCounter
103+
name="title"
103104
value={title}
104105
onChange={(e) => setTitle(e.target.value)}
105106
placeholder="공지사항 제목을 입력하세요"
@@ -115,6 +116,7 @@ const FestivalInfoNoticeEditForm = ({
115116
/>
116117

117118
<TextInputWithCounter
119+
name="content"
118120
value={content}
119121
onChange={(e) => setContent(e.target.value)}
120122
placeholder="공지사항 내용을 입력하세요"

src/pages/FestivalInfoNoticeList/FestivalInfoNoticeListPage.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import getFestivalInfo from '@/apis/festivals/getFestivalInfo';
1414
import FestivalInfoNoticeListInfoCard from '@/pages/FestivalInfoNoticeList/components/FestivalInfoNoticeListInfoCard';
1515
import { deleteFestivalNotice } from '@/apis/notice/deleteFestivalNotice';
1616
import ConfirmModal from '@/components/modal/ConfirmModal';
17-
import { FestivalInfoNoticeCard } from './components/FestivalInfoNoticeCard';
17+
import { FestivalInfoNoticeCard } from '@/pages/FestivalInfoNoticeList/components/FestivalInfoNoticeCard';
1818
import { useDeleteWithConfirm } from '@/hooks/useDeleteWithConfirm';
1919
import { useNoticeNavigationHandlers } from '@/hooks/useNoticeNavigationHandlers';
2020

0 commit comments

Comments
 (0)