Skip to content

Commit 7a1e0e6

Browse files
authored
Merge pull request #88 from oodd-team/feat/OD-137
[OD-137] accountCancel 페이지 UI 수정 및 기타
2 parents 031d87c + d104532 commit 7a1e0e6

2 files changed

Lines changed: 49 additions & 15 deletions

File tree

src/pages/AccountCancel/index.tsx

Lines changed: 48 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,48 +10,61 @@ import back from '../../assets/arrow/left.svg';
1010

1111
import BottomButton from '../../components/BottomButton';
1212
import { patchUserWithdrawApi } from '../../apis/user';
13-
13+
import Modal from '../../components/Modal';
1414

1515
const AccountCancel: React.FC = () => {
1616
const [isChecked, setIsChecked] = useState(false);
17+
const [modalContent, setModalContent] = useState<string | null>(null);
18+
const [isModalVisible, setIsModalVisible] = useState<boolean>(false);
1719
const navigate = useNavigate();
1820

1921
const handleCheckboxChange = () => {
2022
setIsChecked(!isChecked);
2123
};
2224

25+
const handleModalClose = () => {
26+
setIsModalVisible(false);
27+
setModalContent(null);
28+
};
29+
2330
const handleDeleteAccount = async () => {
2431
try {
2532
if (!isChecked) {
26-
alert('탈퇴 안내사항에 동의해야 합니다.');
33+
setModalContent('탈퇴 안내사항에 동의해야 합니다.');
34+
setIsModalVisible(true);
2735
return;
2836
}
2937

3038
const storedUserId = Number(localStorage.getItem('my_id'));
3139
const token = localStorage.getItem('new_jwt_token');
3240

3341
if (!storedUserId || !token) {
42+
setModalContent('사용자 정보를 찾을 수 없습니다.');
43+
setIsModalVisible(true);
3444
return;
3545
}
3646

3747
// API 요청
3848
const response = await patchUserWithdrawApi(storedUserId);
3949

40-
// 요청이 성공했는지 확인
4150
if (response.isSuccess) {
42-
// 성공 메시지 출력
43-
alert('계정이 성공적으로 삭제되었습니다.');
51+
setModalContent('계정이 성공적으로 삭제되었습니다.');
52+
setIsModalVisible(true);
4453

4554
// 계정 삭제 시 localStorage에서 사용자 정보 제거
4655
localStorage.clear();
56+
57+
setTimeout(() => {
58+
navigate('/login');
59+
}, 2000);
4760
} else {
48-
// 요청 실패 시 오류 메시지 출력
49-
console.error('API Error:', response.code || '알 수 없는 오류가 발생했습니다.');
50-
alert(response.code || 'Failed to delete account');
61+
setModalContent(response.code || '알 수 없는 오류가 발생했습니다.');
62+
setIsModalVisible(true);
5163
}
5264
} catch (error) {
5365
console.error('계정 삭제하는데 오류남:', error);
54-
alert('계정을 삭제하는 동안 오류가 발생했습니다. 다시 시도해 주세요.');
66+
setModalContent('계정을 삭제하는 동안 오류가 발생했습니다. 다시 시도해 주세요.');
67+
setIsModalVisible(true);
5568
}
5669
};
5770

@@ -77,16 +90,29 @@ const AccountCancel: React.FC = () => {
7790
</Text>
7891
<InfoBox>
7992
<InfoItem as="div">
80-
<StyledText as="div" $textTheme={{ style: 'body1-medium', lineHeight: 2 }} color={theme.colors.black}>
81-
지금까지 OODD를 이용해주셔서 감사합니다!
82-
</StyledText>
93+
<StyledText
94+
as="div"
95+
$textTheme={{ style: 'body1-medium', lineHeight: 2 }}
96+
color={theme.colors.black}
97+
style={{ whiteSpace: 'nowrap' }} // 줄 바꿈 방지
98+
>
99+
지금까지 OODD를 이용해주셔서 감사합니다!
100+
</StyledText>
101+
83102
</InfoItem>
84103
</InfoBox>
85104
<CheckboxWrapper as="div">
86-
<input type="checkbox" checked={isChecked} onChange={handleCheckboxChange} />
105+
<label style={{ display: 'flex', alignItems: 'center', cursor: 'pointer' }}>
106+
<input
107+
type="checkbox"
108+
checked={isChecked}
109+
onChange={handleCheckboxChange}
110+
style={{ marginRight: '8px' }} // 텍스트와 체크박스 간격 조절
111+
/>
87112
<StyledText as="span" $textTheme={{ style: 'body4-light', lineHeight: 1 }} color={theme.colors.gray3}>
88113
안내사항을 모두 확인하였으며, 이에 동의합니다.
89114
</StyledText>
115+
</label>
90116
</CheckboxWrapper>
91117
</CancelContainer>
92118
<div
@@ -98,6 +124,15 @@ const AccountCancel: React.FC = () => {
98124
>
99125
<BottomButton content="탈퇴하기" onClick={handleDeleteAccount} disabled={!isChecked} />
100126
</div>
127+
{isModalVisible && (
128+
<Modal
129+
content={modalContent || ''} // null일 경우 빈 문자열로 처리
130+
onClose={handleModalClose}
131+
isCloseButtonVisible={true}
132+
button={{ content: '확인', onClick: handleModalClose }}
133+
/>
134+
)}
135+
101136
</OODDFrame>
102137
);
103138
};

src/pages/AccountCancel/styles.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,13 +42,12 @@ export const InfoBox = styled.div`
4242
export const InfoItem = styled.p`
4343
font-size: 0.875rem; /* 14px */
4444
margin-bottom: 0.625rem; /* 10px */
45-
padding: 10px 1.25rem; /* 20px */
45+
padding: 2px 10px;
4646
display: flex;
4747
justify-content: center;
4848
align-items: center;
4949
text-align: center;
5050
height: 100%; /* 부모 컨테이너의 높이에 맞추기 */
51-
5251
`;
5352

5453
export const CheckboxWrapper = styled.div`

0 commit comments

Comments
 (0)