From 174ae7e83df69904af95aca1ca49a312db61128e Mon Sep 17 00:00:00 2001
From: SangHoon Lee <50488780+bbearcookie@users.noreply.github.com>
Date: Mon, 19 Feb 2024 02:24:53 +0900
Subject: [PATCH] =?UTF-8?q?refactor:=20=EB=B0=A9=20=EC=83=9D=EC=84=B1,=20?=
=?UTF-8?q?=EB=B0=A9=20=EA=B4=80=EB=A6=AC=EC=9D=98=20=ED=8F=BC=20=EA=B4=80?=
=?UTF-8?q?=EB=A6=AC=20=EB=A6=AC=ED=8C=A9=ED=86=A0=EB=A7=81=20(#502)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* refactor: FORM_LITERAL 객체로 폼 관련 상수 관리
* remove: 루틴 수정 기능, 방 삭제 탭 제거
---
src/core/api/functions/roomAPI.ts | 2 -
src/domain/RoomForm/components/Password.tsx | 4 +-
src/domain/RoomForm/components/Routines.tsx | 10 +-
src/domain/RoomForm/components/UserCount.tsx | 4 +-
src/domain/RoomForm/constants/literals.ts | 131 ++++++++++--------
.../RoomNew/components/BirdCardSection.tsx | 8 +-
src/domain/RoomNew/hooks/useRoomForm.ts | 31 ++---
src/domain/RoomNew/steps/PasswordStep.tsx | 8 +-
src/domain/RoomNew/steps/RoutineStep.tsx | 4 +-
src/domain/RoomSetting/hooks/useRoomForm.ts | 45 ++----
src/domain/RoomSetting/index.ts | 1 -
.../RoomSetting/tabs/RemoveTab.stories.tsx | 72 ----------
src/domain/RoomSetting/tabs/RemoveTab.tsx | 105 --------------
src/domain/RoomSetting/tabs/RoomTab.tsx | 20 +--
src/pages/RoomSettingPage.tsx | 6 -
15 files changed, 129 insertions(+), 322 deletions(-)
delete mode 100644 src/domain/RoomSetting/tabs/RemoveTab.stories.tsx
delete mode 100644 src/domain/RoomSetting/tabs/RemoveTab.tsx
diff --git a/src/core/api/functions/roomAPI.ts b/src/core/api/functions/roomAPI.ts
index d98d6fa2..d8da4a3b 100644
--- a/src/core/api/functions/roomAPI.ts
+++ b/src/core/api/functions/roomAPI.ts
@@ -36,8 +36,6 @@ const roomAPI = {
roomId: string;
title: string;
announcement: string;
- // TODO: 루틴 수정을 제한하는 요구사항 발생
- // routines: string[];
password: string;
certifyTime: number;
maxUserCount: number;
diff --git a/src/domain/RoomForm/components/Password.tsx b/src/domain/RoomForm/components/Password.tsx
index 3b3c1fde..b1d2f95e 100644
--- a/src/domain/RoomForm/components/Password.tsx
+++ b/src/domain/RoomForm/components/Password.tsx
@@ -1,7 +1,7 @@
import { useCallback } from 'react';
import { useFormContext } from 'react-hook-form';
import { PasswordInput } from '@/shared/Input';
-import { PASSWORD } from '@/domain/RoomForm/constants/literals';
+import { FORM_LITERAL } from '@/domain/RoomForm/constants/literals';
import { errorStyle } from '../constants/styles';
interface PasswordProps {
@@ -29,7 +29,7 @@ const Password = ({ placeholder }: PasswordProps) => {
- 선택사항입니다. {PASSWORD.min}자리에서 {PASSWORD.max}자리 숫자를 - 적어주세요! + 선택사항입니다. {min}자리에서 {max}자리 숫자를 적어주세요!
{errors.title.message}
} diff --git a/src/domain/RoomSetting/hooks/useRoomForm.ts b/src/domain/RoomSetting/hooks/useRoomForm.ts index 14a3bf0e..2346a5c4 100644 --- a/src/domain/RoomSetting/hooks/useRoomForm.ts +++ b/src/domain/RoomSetting/hooks/useRoomForm.ts @@ -6,47 +6,40 @@ import roomAPI from '@/core/api/functions/roomAPI'; import { roomOptions } from '@/core/api/options'; import { useMoveRoute } from '@/core/hooks'; import { Toast } from '@/shared/Toast'; -import { - ANNOUNCEMENT, - ROUTINE_NAME, - ROOM_NAME, - USER_COUNT, - PASSWORD, - FORM_MESSAGE -} from '@/domain/RoomForm/constants/literals'; +import { FORM_LITERAL as L } from '@/domain/RoomForm/constants/literals'; export const formSchema = z.object({ title: z .string() .trim() - .min(ROOM_NAME.min, FORM_MESSAGE.ROOM_NAME) - .max(ROOM_NAME.max, FORM_MESSAGE.ROOM_NAME), + .min(L.title.min.value, L.title.min.message) + .max(L.title.max.value, L.title.max.message), announcement: z .string() .trim() - .min(ANNOUNCEMENT.min, FORM_MESSAGE.ANNOUNCEMENT) - .max(ANNOUNCEMENT.max, FORM_MESSAGE.ANNOUNCEMENT), + .min(L.announcement.min.value) + .max(L.announcement.max.value, L.announcement.max.message), certifyTime: z.number(), routines: z.array( z.object({ value: z .string() .trim() - .min(ROUTINE_NAME.min, FORM_MESSAGE.ROUTINE_NAME) - .max(ROUTINE_NAME.max, FORM_MESSAGE.ROUTINE_NAME) + .min(L.routines.item.min.value, L.routines.item.min.message) + .max(L.routines.item.max.value, L.routines.item.max.message) }) ), userCount: z .number() - .gte(USER_COUNT.min, FORM_MESSAGE.USER_COUNT) - .lte(USER_COUNT.max, FORM_MESSAGE.USER_COUNT), + .gte(L.userCount.min.value, L.userCount.min.message) + .lte(L.userCount.max.value, L.userCount.max.message), password: z.literal('').or( z .string() - .min(PASSWORD.min, FORM_MESSAGE.PASSWORD) - .max(PASSWORD.max, FORM_MESSAGE.PASSWORD) + .min(L.password.min.value, L.password.min.message) + .max(L.password.max.value, L.password.max.message) .refine((v) => /^\d*$/.test(v), { - message: FORM_MESSAGE.ONLY_NUMERIC_PASSWORD + message: L.password.onlyNumeric.message }) ) }); @@ -79,8 +72,6 @@ const useRoomForm = ({ roomId, defaultValues }: useRoomFormProps) => { title: data.title, announcement: data.announcement, certifyTime: data.certifyTime % 24, - // TODO: 루틴 수정을 제한하는 요구사항 발생 - // routines: data.routines.map((r) => r.value), maxUserCount: data.userCount, password: data.password }, @@ -106,19 +97,11 @@ const useRoomForm = ({ roomId, defaultValues }: useRoomFormProps) => { }); if (error.response?.data?.validation) { - const { - title, - announcement, - routine, - password, - certifyTime, - maxUserCount - } = error.response.data.validation; + const { title, announcement, password, certifyTime, maxUserCount } = + error.response.data.validation; setError('title', { message: title }); setError('announcement', { message: announcement }); - // TODO: 루틴 수정을 제한하는 요구사항 발생 - // setError('routines', { message: routine }); setError('password', { message: password }); setError('certifyTime', { message: certifyTime }); setError('userCount', { message: maxUserCount }); diff --git a/src/domain/RoomSetting/index.ts b/src/domain/RoomSetting/index.ts index 214a8eee..bac55618 100644 --- a/src/domain/RoomSetting/index.ts +++ b/src/domain/RoomSetting/index.ts @@ -1,4 +1,3 @@ export { default as RoomTab } from './tabs/RoomTab'; export { default as MemberTab } from './tabs/MemberTab'; -export { default as RemoveTab } from './tabs/RemoveTab'; export { default as LoadingFallback } from './components/LoadingFallback'; diff --git a/src/domain/RoomSetting/tabs/RemoveTab.stories.tsx b/src/domain/RoomSetting/tabs/RemoveTab.stories.tsx deleted file mode 100644 index 61f93c5c..00000000 --- a/src/domain/RoomSetting/tabs/RemoveTab.stories.tsx +++ /dev/null @@ -1,72 +0,0 @@ -import { Meta, StoryObj } from '@storybook/react'; -import { http, HttpResponse } from 'msw'; -import { Title, Description, Stories } from '@storybook/blocks'; -import { baseURL } from '@/core/api/mocks/baseURL'; -import { RoomInfoBeforeEditing } from '@/core/api/mocks/datas/room'; -import RemoveTab from './RemoveTab'; - -const meta = { - title: 'Pages/RoomSetting/RemoveTab', - component: RemoveTab, - tags: ['autodocs'], - parameters: { - docs: { - description: { - component: '방 관리 페이지의 삭제 탭에서는 조건부 렌더링이 존재합니다.' - }, - page: () => ( - <> -방에 혼자 남았을 때만
-삭제할 수 있어요.
- - > - ); - } else { - return ( - <> -- {error.response?.data.message} -
- )} - - > - ); - } -}; - -export default RemoveTab; - -// 헤딩에 적용할 스타일 -const headingStyle = 'text-xl font-bold'; - -// 회색으로 간결한 설명을 적을 때 적용할 스타일 -const descriptionStyle = 'text-base text-dark-gray'; diff --git a/src/domain/RoomSetting/tabs/RoomTab.tsx b/src/domain/RoomSetting/tabs/RoomTab.tsx index 02d8aecb..d7986489 100644 --- a/src/domain/RoomSetting/tabs/RoomTab.tsx +++ b/src/domain/RoomSetting/tabs/RoomTab.tsx @@ -6,12 +6,8 @@ import { roomOptions } from '@/core/api/options'; import { Input } from '@/shared/Input'; import { LoadingSpinner } from '@/shared/LoadingSpinner'; import { formatHourString } from '@/domain/TimePicker/utils/hour'; -import { - TIME_RANGE, - ANNOUNCEMENT, - ROOM_NAME -} from '@/domain/RoomForm/constants/literals'; -import { UserCount, Routines, Password } from '@/domain/RoomForm'; +import { TIME_RANGE, FORM_LITERAL } from '@/domain/RoomForm/constants/literals'; +import { UserCount, Password } from '@/domain/RoomForm'; import { TimePicker } from '@/domain/TimePicker'; import useRoomForm from '../hooks/useRoomForm'; @@ -67,7 +63,7 @@ const RoomTab = ({ roomId }: RoomTabProps) => { {errors.title && ({errors.title?.message}
@@ -81,7 +77,7 @@ const RoomTab = ({ roomId }: RoomTabProps) => { > 공지사항- {watchAnnouncement.length} / {ANNOUNCEMENT.max} + {watchAnnouncement.length} / {FORM_LITERAL.announcement.max.value}