11import { useState } from 'react' ;
2- import BottomSheet from '..' ;
3- import BottomSheetMenu from '../.. /BottomSheetMenu' ;
2+ import BottomSheet from '../index ' ;
3+ import BottomSheetMenu from '@components /BottomSheetMenu' ;
44import ReportBottomSheetMenu from './ReportBottomSheetMenu' ;
5- import Modal from '../.. /Modal' ;
5+ import Modal from '@components /Modal' ;
66
7- import { OptionsBottomSheetProps } from './dto' ;
8- import { BottomSheetProps } from '../dto' ;
9- import { BottomSheetMenuProps } from '../.. /BottomSheetMenu/dto' ;
10- import { ReportBottomSheetMenuProps } from './ReportBottomSheetMenu/dto' ;
11- import { ModalProps } from '../.. /Modal/dto' ;
7+ import type { OptionsBottomSheetProps } from './dto' ;
8+ import type { BottomSheetProps } from '../dto' ;
9+ import type { BottomSheetMenuProps } from '@components /BottomSheetMenu/dto' ;
10+ import type { ReportBottomSheetMenuProps } from './ReportBottomSheetMenu/dto' ;
11+ import type { ModalProps } from '@components /Modal/dto' ;
1212
13- import { SendPostReportRequest } from '../../../ apis/post-report/dto' ;
14- import { PostUserReportRequest } from '../../../ apis/user-report/dto' ;
15- import { PostUserBlockRequest } from '../../../ apis/user-block/dto' ;
13+ import type { SendPostReportRequest } from '@ apis/post-report/dto' ;
14+ import type { PostUserReportRequest } from '@ apis/user-report/dto' ;
15+ import type { PostUserBlockRequest } from '@ apis/user-block/dto' ;
1616
17- import { StyledText } from '../../Text/StyledText' ;
18- import { handleError } from '../../../apis/util/handleError' ;
19- import blockIcon from '../../../assets/default/block.svg' ;
20- import reportIcon from '../../../assets/default/report.svg' ;
17+ import { StyledText } from '@components/Text/StyledText' ;
18+ import { handleError } from '@apis/util/handleError' ;
19+ import blockIcon from '@assets/default/block.svg' ;
20+ import reportIcon from '@assets/default/report.svg' ;
21+ import closeIcon from '@assets/default/modal-close-white.svg' ;
2122
2223import {
2324 ReportBottomSheetLayout ,
2425 ReportModalLayout ,
2526 ReportModalWrapper ,
2627 ReportModalContainer ,
2728 ReportModalHeader ,
28- XButton ,
29+ CloseButton ,
2930 ReportModalBox ,
3031} from './styles' ;
31- import theme from '../../../styles/theme' ;
32- import { postUserBlockApi } from '../../../apis/user-block' ;
33- import { postUserReportApi } from '../../../apis/user-report' ;
34- import { sendPostReportApi } from '../../../apis/post-report' ;
32+ import theme from '@styles/theme' ;
33+ import { postUserBlockApi } from '@apis/user-block' ;
34+ import { postUserReportApi } from '@apis/user-report' ;
35+ import { sendPostReportApi } from '@apis/post-report' ;
36+ import { getCurrentUserId } from '@utils/getCurrentUserId' ;
3537
3638const OptionsBottomSheet : React . FC < OptionsBottomSheetProps > = ( {
3739 domain,
@@ -44,18 +46,25 @@ const OptionsBottomSheet: React.FC<OptionsBottomSheetProps> = ({
4446 const [ isReportBottomSheetOpen , setIsReportBottomSheetOpen ] = useState ( false ) ;
4547 const [ isStatusModalOpen , setIsStatusModalOpen ] = useState ( false ) ;
4648 const [ modalContent , setModalContent ] = useState ( '알 수 없는 오류입니다.\n관리자에게 문의해 주세요.' ) ;
47- const storageValue = localStorage . getItem ( 'my_id' ) ;
48- const userId = Number ( storageValue ) ;
49+ const currentUserId = getCurrentUserId ( ) ;
4950
50- const sendBlock = async ( ) => {
51+ const handleBackgroundClick = ( e : React . MouseEvent ) => {
52+ e . stopPropagation ( ) ;
53+ if ( e . target === e . currentTarget ) {
54+ setIsReportBottomSheetOpen ( false ) ;
55+ }
56+ } ;
57+
58+ // 유저 차단 api
59+ const postUserBlock = async ( ) => {
5160 try {
52- const blockRequest : PostUserBlockRequest = {
53- fromUserId : userId ,
61+ const request : PostUserBlockRequest = {
62+ fromUserId : currentUserId ,
5463 toUserId : targetId . userId || - 1 ,
5564 action : 'block' ,
5665 } ;
57- const response = await postUserBlockApi ( blockRequest ) ;
58-
66+ const response = await postUserBlockApi ( request ) ;
67+
5968 if ( response . isSuccess ) {
6069 setModalContent ( '정상적으로 처리되었습니다.' ) ;
6170 }
@@ -68,19 +77,20 @@ const OptionsBottomSheet: React.FC<OptionsBottomSheetProps> = ({
6877 }
6978 } ;
7079
80+ // 유저 또는 게시글 신고 api
7181 const sendReport = async ( reason : string ) => {
7282 try {
7383 let reportData : PostUserReportRequest | SendPostReportRequest ;
7484
7585 if ( domain === 'user' ) {
7686 reportData = {
77- fromUserId : userId ,
87+ fromUserId : currentUserId ,
7888 toUserId : targetId . userId || - 1 ,
7989 reason : reason ,
8090 } ;
8191 } else {
8292 reportData = {
83- requesterId : userId ,
93+ requesterId : currentUserId ,
8494 postId : targetId . postId || - 1 ,
8595 reason : reason ,
8696 } ;
@@ -91,7 +101,6 @@ const OptionsBottomSheet: React.FC<OptionsBottomSheetProps> = ({
91101 ? await postUserReportApi ( reportData as PostUserReportRequest )
92102 : await sendPostReportApi ( reportData as SendPostReportRequest ) ;
93103
94- // response.isSuccess
95104 if ( response . isSuccess ) {
96105 setModalContent ( '정상적으로 처리되었습니다.' ) ;
97106 }
@@ -126,7 +135,7 @@ const OptionsBottomSheet: React.FC<OptionsBottomSheetProps> = ({
126135 ] ,
127136 } ;
128137
129- // 더보기(kebab) 메뉴 바텀시트
138+ // 더보기 바텀시트
130139 const optionsBottomSheetProps : BottomSheetProps = {
131140 isOpenBottomSheet : isBottomSheetOpen ,
132141 Component : BottomSheetMenu ,
@@ -143,7 +152,7 @@ const OptionsBottomSheet: React.FC<OptionsBottomSheetProps> = ({
143152 content : `${ targetNickname || '알수없음' } 님을\n정말로 차단하시겠어요?` ,
144153 button : {
145154 content : '차단하기' ,
146- onClick : sendBlock ,
155+ onClick : postUserBlock ,
147156 } ,
148157 } ;
149158
@@ -177,13 +186,6 @@ const OptionsBottomSheet: React.FC<OptionsBottomSheetProps> = ({
177186 } ,
178187 } ;
179188
180- const handleBackgroundClick = ( e : React . MouseEvent ) => {
181- e . stopPropagation ( ) ;
182- if ( e . target === e . currentTarget ) {
183- setIsReportBottomSheetOpen ( false ) ;
184- }
185- } ;
186-
187189 return (
188190 < >
189191 < BottomSheet { ...optionsBottomSheetProps } />
@@ -201,11 +203,13 @@ const OptionsBottomSheet: React.FC<OptionsBottomSheetProps> = ({
201203 < StyledText $textTheme = { { style : 'heading1-bold' } } color = { theme . colors . white } >
202204 신고 사유 선택
203205 </ StyledText >
204- < XButton
206+ < CloseButton
205207 onClick = { ( ) => {
206208 setIsReportBottomSheetOpen ( false ) ;
207209 } }
208- />
210+ >
211+ < img src = { closeIcon } alt = "닫기" />
212+ </ CloseButton >
209213 </ ReportModalHeader >
210214 < ReportModalBox >
211215 < ReportBottomSheetMenu { ...reportBottomSheetMenuProps } />
0 commit comments