From e852a6def82135fe364d073924c0272b675f8fa3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=A1=B0=EC=98=88=EC=A7=84?= Date: Thu, 19 Dec 2024 14:32:01 +0900 Subject: [PATCH] refactor: extract ProfileEditBody --- src/features/EditInfo/ProfileEditBody.tsx | 32 +++++++++++++++++++ .../EditInfo/ProfileEditBottomSheet.tsx | 20 ++---------- src/processes/shortcut/Shortcut.tsx | 20 +++--------- 3 files changed, 38 insertions(+), 34 deletions(-) create mode 100644 src/features/EditInfo/ProfileEditBody.tsx diff --git a/src/features/EditInfo/ProfileEditBody.tsx b/src/features/EditInfo/ProfileEditBody.tsx new file mode 100644 index 0000000..f9bc295 --- /dev/null +++ b/src/features/EditInfo/ProfileEditBody.tsx @@ -0,0 +1,32 @@ +import styles from 'src/processes/shortcut/Shortcut.module.css'; +import { Button } from 'src/shared/ui/Button/Button'; +import { StepMeta } from 'src/shared/types/FormStepMeta'; +import { MyProfile } from 'src/entities/profile/model/myProfileStore'; +import { IdealPartner } from 'src/entities/ideal_partner/model/idealPartnerStore'; +import { useProfileFirstName } from 'src/entities/profile/lib/useProfileFirstName'; + +type Props = { + stepMeta: StepMeta | StepMeta; + onCompleteEdit: () => void; +}; + +export const ProfileEditBody = ({ stepMeta, onCompleteEdit }: Props) => { + const name = useProfileFirstName(); + + return ( + <> +
+

{stepMeta.title({ name })}

+ {'description' in stepMeta && stepMeta.description && ( + {stepMeta.description()} + )} +
+
{stepMeta.form({})}
+
+ +
+ + ); +}; diff --git a/src/features/EditInfo/ProfileEditBottomSheet.tsx b/src/features/EditInfo/ProfileEditBottomSheet.tsx index 219950c..85c1b89 100644 --- a/src/features/EditInfo/ProfileEditBottomSheet.tsx +++ b/src/features/EditInfo/ProfileEditBottomSheet.tsx @@ -1,10 +1,8 @@ import { BottomSheet } from 'src/shared/ui/BottomSheet/BottomSheet'; -import styles from 'src/processes/shortcut/Shortcut.module.css'; -import { Button } from 'src/shared/ui/Button/Button'; -import { useProfileFirstName } from 'src/entities/profile/lib/useProfileFirstName'; import { StepMeta } from 'src/shared/types/FormStepMeta'; import { MyProfile } from 'src/entities/profile/model/myProfileStore'; import { IdealPartner } from 'src/entities/ideal_partner/model/idealPartnerStore'; +import { ProfileEditBody } from 'src/features/EditInfo/ProfileEditBody'; type Props = { stepMeta: StepMeta | StepMeta | null; @@ -13,25 +11,11 @@ type Props = { }; export const ProfileEditBottomSheet = ({ stepMeta, onClose, onCompleteEdit }: Props) => { - const name = useProfileFirstName(); return ( - {stepMeta && ( - <> -
-

{stepMeta.title({ name })}

- {stepMeta.description && {stepMeta.description()}} -
-
{stepMeta.form({})}
-
- -
- - )} + {stepMeta && }
); diff --git a/src/processes/shortcut/Shortcut.tsx b/src/processes/shortcut/Shortcut.tsx index 0228a85..2707bd0 100644 --- a/src/processes/shortcut/Shortcut.tsx +++ b/src/processes/shortcut/Shortcut.tsx @@ -4,7 +4,6 @@ import { useRef, useState } from 'react'; import { Button } from 'src/shared/ui/Button/Button'; import { MyProfileStepMeta } from 'src/pages/form/my_profile/MyProfileStepMeta'; import { IdealPartnerStepMeta } from 'src/pages/form/ideal_partner/IdealPartnerStepMeta'; -import { useProfileFirstName } from 'src/entities/profile/lib/useProfileFirstName'; import { ScrollView } from 'src/shared/ui/ScrollView/ScrollView'; import { Spacing } from 'src/shared/ui/Spacing/Spacing'; import { useMyProfileFormProcessStore } from 'src/processes/my_profile/_store/myProfileFormProcessStore'; @@ -14,6 +13,7 @@ import toast from 'react-hot-toast'; import { StepMeta } from 'src/shared/types/FormStepMeta'; import { MyProfile } from 'src/entities/profile/model/myProfileStore'; import { IdealPartner } from 'src/entities/ideal_partner/model/idealPartnerStore'; +import { ProfileEditBody } from 'src/features/EditInfo/ProfileEditBody'; const ProfileMetaList = Array.from(Object.entries(MyProfileStepMeta)) as [ keyof typeof MyProfileStepMeta, @@ -28,7 +28,7 @@ export const Shortcut = ({ right, bottom }: { right: `${number}px`; bottom: `${n const floatingButtonPosition = useRef({ right, bottom }); const myProfileTouchedSteps = useMyProfileFormProcessStore((state) => state.touchedSteps); - const ideaelPartnerTouchedSteps = useIdealPartnerFormProcessStore((state) => state.touchedSteps); + const idealPartnerTouchedSteps = useIdealPartnerFormProcessStore((state) => state.touchedSteps); const [open, setOpen] = useState(false); const [selectedKey, setSelectedKey] = useState< @@ -51,7 +51,6 @@ export const Shortcut = ({ right, bottom }: { right: `${number}px`; bottom: `${n const selectedStep = selectedKey && (selectedKey.section === 'PROFILE' ? MyProfileStepMeta[selectedKey.key] : IdealPartnerStepMeta[selectedKey.key]); - const name = useProfileFirstName(); const onSelectProfile = (key: keyof typeof MyProfileStepMeta) => { setSelectedKey({ section: 'PROFILE', key }); @@ -99,7 +98,7 @@ export const Shortcut = ({ right, bottom }: { right: `${number}px`; bottom: `${n onSelectIdealPartner(key)} /> ))} @@ -109,18 +108,7 @@ export const Shortcut = ({ right, bottom }: { right: `${number}px`; bottom: `${n )} {selectedKey !== null && selectedStep && (
-
-

{selectedStep.title({ name })}

- {'description' in selectedStep && ( - {selectedStep.description()} - )} -
-
{selectedStep.form({})}
-
- -
+
)}