Skip to content

Commit de135a2

Browse files
committed
Merge remote-tracking branch 'origin/dev' into feat/mypage#106
2 parents b310c7c + f3a82f0 commit de135a2

File tree

3 files changed

+31
-14
lines changed

3 files changed

+31
-14
lines changed

src/domains/mypage/components/EditNickName.tsx

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,12 @@ import TextButton from '@/shared/components/button/TextButton';
44
import Input from '@/shared/components/Input-box/Input';
55
import ModalLayout from '@/shared/components/modal-pop/ModalLayout';
66
import { useToast } from '@/shared/hook/useToast';
7-
import { Dispatch, SetStateAction } from 'react';
7+
import { Dispatch, SetStateAction, useEffect, useState } from 'react';
88

99
interface Props {
1010
open: boolean;
1111
onClose: () => void;
12+
nickname:string
1213
setNickName: (v: string) => void;
1314
setIsOpen: Dispatch<SetStateAction<boolean>>;
1415
editNickName: string;
@@ -18,14 +19,22 @@ interface Props {
1819
function EditNickName({
1920
open,
2021
onClose,
22+
nickname,
2123
setNickName,
2224
setIsOpen,
2325
editNickName,
2426
setEditNickName,
2527
}: Props) {
26-
const { toastError } = useToast();
28+
const [defaultNickname,setDefaultNickname] = useState(nickname)
29+
const { toastSuccess,toastError } = useToast();
30+
31+
useEffect(() => {
32+
setEditNickName(nickname)
33+
setDefaultNickname(nickname)
34+
}, [nickname,setEditNickName])
35+
2736
const handlesave = async () => {
28-
if (editNickName.length <= 1) {
37+
if (editNickName.length <= 1 || editNickName.length >= 8) {
2938
toastError('닉네임은 2글자 이상 입력해야합니다');
3039
return;
3140
}
@@ -43,16 +52,22 @@ function EditNickName({
4352
}),
4453
});
4554
await setIsOpen(false);
55+
toastSuccess('닉네임이 저장되었습니다.');
4656
};
4757

4858
const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
4959
setEditNickName(e.target.value);
60+
5061
};
5162

63+
const handleDefaultNickname = () => {
64+
setEditNickName(defaultNickname)
65+
}
66+
5267
return (
5368
<ModalLayout
54-
title="닉네임 수정"
55-
description="닉네임을 수정해주세요."
69+
title="닉네임 변경"
70+
description="닉네임을 변경해주세요."
5671
open={open}
5772
onClose={onClose}
5873
buttons={
@@ -67,11 +82,12 @@ function EditNickName({
6782
</label>
6883
<Input
6984
onChange={(e) => handleChange(e)}
70-
placeholder="8글자 이내로 입력해주세요"
85+
placeholder="닉네임을 2글자 이상 8글자 이내로 입력해주세요"
7186
id="editNickName"
87+
value={editNickName}
7288
className="w-full"
7389
/>
74-
<TextButton onClick={onClose}>기존 이름으로 돌아가기</TextButton>
90+
<TextButton onClick={handleDefaultNickname}>전 닉네임으로 돌아가기</TextButton>
7591
</div>
7692
</ModalLayout>
7793
);

src/domains/mypage/main/MySetting.tsx

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
import EditNickName from '@/domains/mypage/components/EditNickName';
33
import ToggleBtn from '@/domains/mypage/components/ToggleBtn';
44
import WithdrawModal from '@/domains/mypage/components/WithdrawModal';
5-
import Button from '@/shared/components/button/Button';
65
import TextButton from '@/shared/components/button/TextButton';
76
import { useEffect, useState } from 'react';
87
import useFetchProfile from '../api/fetchProfile';
@@ -26,6 +25,7 @@ function MySetting() {
2625
<section className="flex flex-col h-80 md:h-100 lg:h-125 justify-between">
2726
{isOpen && (
2827
<EditNickName
28+
nickname={nickname ?? ''}
2929
setIsOpen={setIsOpen}
3030
editNickName={editNickName}
3131
setEditNickName={setEditNickName}
@@ -45,13 +45,8 @@ function MySetting() {
4545
<ToggleBtn />
4646
</div>
4747
</div>
48-
<div className="flex justify-between items-center">
48+
<div className="flex justify-end items-center">
4949
<TextButton onClick={() => setIsQuit(!isQuit)}>회원탈퇴</TextButton>
50-
51-
<div className="flex gap-2 ">
52-
<Button color="purple">취소</Button>
53-
<Button>변경상태 저장</Button>
54-
</div>
5550
</div>
5651
</section>
5752
);

src/shared/components/Input-box/Input.tsx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ import Button from '../button/Button';
1313

1414
interface Props {
1515
placeholder: string;
16+
value?: string
17+
1618
type?: HTMLInputTypeAttribute;
1719
ref?: Ref<HTMLInputElement | null>;
1820
size?: 'default' | 'lg';
@@ -41,6 +43,8 @@ function Input({
4143
placeholder,
4244
type,
4345
ref,
46+
value,
47+
4448
size,
4549
variant = 'default',
4650
className,
@@ -57,6 +61,8 @@ function Input({
5761
placeholder={placeholder}
5862
className={`outline-none w-full flex-1 leading-${size}`}
5963
ref={ref}
64+
value={value}
65+
6066
onChange={onChange}
6167
{...rest}
6268
/>

0 commit comments

Comments
 (0)