From 970cc3b9fac62a0895d9a67374a7c7fe91826c12 Mon Sep 17 00:00:00 2001 From: fr0gydev Date: Thu, 21 Aug 2025 10:31:39 +0900 Subject: [PATCH 1/2] =?UTF-8?q?fix:=20=ED=83=80=EC=9E=85=20=EC=97=90?= =?UTF-8?q?=EB=9F=AC=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/rooms/getRoomDetail.ts | 21 +++++++++++-------- src/api/rooms/getRoomMembers.ts | 5 +++-- src/api/rooms/getRoomPlaying.ts | 5 +++-- src/pages/groupDetail/GroupDetail.tsx | 6 +++--- .../groupDetail/ParticipatedGroupDetail.tsx | 4 ++-- src/pages/groupMembers/GroupMembers.tsx | 4 ++-- 6 files changed, 25 insertions(+), 20 deletions(-) diff --git a/src/api/rooms/getRoomDetail.ts b/src/api/rooms/getRoomDetail.ts index 123c480a..079a862f 100644 --- a/src/api/rooms/getRoomDetail.ts +++ b/src/api/rooms/getRoomDetail.ts @@ -1,4 +1,5 @@ import { apiClient } from '../index'; +import { AxiosError } from 'axios'; // 방 상세 정보 응답 타입 export interface RoomDetailResponse { @@ -42,17 +43,19 @@ export const getRoomDetail = async (roomId: number): Promise try { const response = await apiClient.get(`/rooms/${roomId}/recruiting`); return response.data; - } catch (error: any) { + } catch (error: unknown) { console.error('방 상세 정보 조회 API 오류:', error); - // 모집기간이 만료된 방인 경우 - if (error.response?.data?.code === 100004) { - throw new Error('모집기간이 만료된 방입니다.'); - } - - // 방 접근 권한이 없는 경우 - if (error.response?.data?.code === 140011) { - throw new Error('방 접근 권한이 없습니다.'); + if (error instanceof AxiosError) { + // 모집기간이 만료된 방인 경우 + if (error.response?.data?.code === 100004) { + throw new Error('모집기간이 만료된 방입니다.'); + } + + // 방 접근 권한이 없는 경우 + if (error.response?.data?.code === 140011) { + throw new Error('방 접근 권한이 없습니다.'); + } } throw error; diff --git a/src/api/rooms/getRoomMembers.ts b/src/api/rooms/getRoomMembers.ts index b7212013..50f136be 100644 --- a/src/api/rooms/getRoomMembers.ts +++ b/src/api/rooms/getRoomMembers.ts @@ -1,4 +1,5 @@ import { apiClient } from '../index'; +import { AxiosError } from 'axios'; export interface RoomMember { userId: number; @@ -47,11 +48,11 @@ export const getRoomMembers = async (roomId: number): Promise(`/rooms/${roomId}/users`); return response.data; - } catch (error: any) { + } catch (error: unknown) { console.error('독서메이트 조회 API 오류:', error); // 방 접근 권한이 없는 경우 - if (error.response?.data?.code === 140011) { + if (error instanceof AxiosError && error.response?.data?.code === 140011) { throw new Error('방 접근 권한이 없습니다.'); } diff --git a/src/api/rooms/getRoomPlaying.ts b/src/api/rooms/getRoomPlaying.ts index 1d2fa5fa..d21d0c72 100644 --- a/src/api/rooms/getRoomPlaying.ts +++ b/src/api/rooms/getRoomPlaying.ts @@ -1,4 +1,5 @@ import { apiClient } from '../index'; +import { AxiosError } from 'axios'; // 투표 아이템 타입 export interface VoteItem { @@ -65,11 +66,11 @@ export const getRoomPlaying = async (roomId: number): Promise(`/rooms/${roomId}/playing`); return response.data; - } catch (error: any) { + } catch (error: unknown) { console.error('진행중인 방 상세 정보 조회 API 오류:', error); // 방 접근 권한이 없는 경우 - if (error.response?.data?.code === 140011) { + if (error instanceof AxiosError && error.response?.data?.code === 140011) { throw new Error('방 접근 권한이 없습니다.'); } diff --git a/src/pages/groupDetail/GroupDetail.tsx b/src/pages/groupDetail/GroupDetail.tsx index e202a61a..b44550ce 100644 --- a/src/pages/groupDetail/GroupDetail.tsx +++ b/src/pages/groupDetail/GroupDetail.tsx @@ -97,17 +97,17 @@ const GroupDetail = () => { } else { setError(response.message); } - } catch (error: any) { + } catch (error: unknown) { console.error('방 상세 정보 조회 실패:', error); // 모집기간이 만료된 방인 경우 - 진행중인 방으로 리다이렉트 - if (error.message === '모집기간이 만료된 방입니다.') { + if (error instanceof Error && error.message === '모집기간이 만료된 방입니다.') { navigate(`/group/detail/joined/${roomId}`, { replace: true }); return; } // 방 접근 권한이 없는 경우 - 모임 홈으로 리다이렉트 - if (error.message === '방 접근 권한이 없습니다.') { + if (error instanceof Error && error.message === '방 접근 권한이 없습니다.') { navigate('/group', { replace: true }); return; } diff --git a/src/pages/groupDetail/ParticipatedGroupDetail.tsx b/src/pages/groupDetail/ParticipatedGroupDetail.tsx index 9be1d572..38f35343 100644 --- a/src/pages/groupDetail/ParticipatedGroupDetail.tsx +++ b/src/pages/groupDetail/ParticipatedGroupDetail.tsx @@ -74,11 +74,11 @@ const ParticipatedGroupDetail = () => { } else { setError(response.message); } - } catch (err: any) { + } catch (err: unknown) { console.error('방 상세 정보 조회 오류:', err); // 방 접근 권한이 없는 경우 - 모임 홈으로 리다이렉트 - if (err.message === '방 접근 권한이 없습니다.') { + if (err instanceof Error && err.message === '방 접근 권한이 없습니다.') { navigate('/group', { replace: true }); return; } diff --git a/src/pages/groupMembers/GroupMembers.tsx b/src/pages/groupMembers/GroupMembers.tsx index 0eb988e3..c429263a 100644 --- a/src/pages/groupMembers/GroupMembers.tsx +++ b/src/pages/groupMembers/GroupMembers.tsx @@ -42,11 +42,11 @@ const GroupMembers = () => { } else { setError(response.message); } - } catch (err: any) { + } catch (err: unknown) { console.error('독서메이트 조회 오류:', err); // 방 접근 권한이 없는 경우 - 모임 홈으로 리다이렉트 - if (err.message === '방 접근 권한이 없습니다.') { + if (err instanceof Error && err.message === '방 접근 권한이 없습니다.') { navigate('/group', { replace: true }); return; } From 5db12261cb43a27696cc1ca37840f4f6f121afca Mon Sep 17 00:00:00 2001 From: fr0gydev Date: Thu, 21 Aug 2025 10:32:43 +0900 Subject: [PATCH 2/2] =?UTF-8?q?refactor:=20=ED=82=A4=EB=B3=B4=EB=93=9C=20?= =?UTF-8?q?=EC=A0=91=EA=B7=BC=EC=84=B1=EC=9D=84=20=EC=9C=84=ED=95=9C=20?= =?UTF-8?q?=EC=8A=A4=ED=83=80=EC=9D=BC=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/group/CommentSection.styled.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/components/group/CommentSection.styled.ts b/src/components/group/CommentSection.styled.ts index aac581d0..d1e96aab 100644 --- a/src/components/group/CommentSection.styled.ts +++ b/src/components/group/CommentSection.styled.ts @@ -11,6 +11,11 @@ export const CommentSection = styled.section` padding: 16px 12px; border-radius: 12px; cursor: pointer; + + &:focus-visible { + outline: 2px solid ${colors.purple.main}; + outline-offset: 2px; + } `; export const CommentSectionHeader = styled.div`