Skip to content

Commit b5d1343

Browse files
committed
feat: 참여하지 않는 동아리 접근 차단 로직 추가
- 클럽 상세 정보 조회 후, 해당 동아리 이름이 목록에 포함되어 있으면 alert를 띄우고 메인 페이지로 리다이렉트
1 parent 1f33dea commit b5d1343

File tree

1 file changed

+18
-2
lines changed

1 file changed

+18
-2
lines changed

frontend/src/pages/ClubDetailPage/ClubDetailPage.tsx

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { useEffect, useState } from 'react';
2-
import { useParams } from 'react-router-dom';
2+
import { useNavigate, useParams } from 'react-router-dom';
33
import * as Styled from '@/styles/PageContainer.styles';
44
import Header from '@/components/common/Header/Header';
55
import BackNavigationBar from '@/pages/ClubDetailPage/components/BackNavigationBar/BackNavigationBar';
@@ -61,8 +61,24 @@ const ClubDetailPage = () => {
6161
const { sectionRefs, scrollToSection } = useAutoScroll();
6262
const [showHeader, setShowHeader] = useState(window.innerWidth > 500);
6363

64+
const navigate = useNavigate();
65+
const [blockState, setBlockState] = useState<
66+
'checking' | 'blocked' | 'allowed'
67+
>('checking');
6468
const { data: clubDetail, error } = useGetClubDetail(clubId || '');
6569

70+
useEffect(() => {
71+
if (!clubDetail) return;
72+
73+
if (notJoinedClubNames.includes(clubDetail?.name || '')) {
74+
setBlockState('blocked');
75+
alert('참여하지 않는 동아리입니다.');
76+
navigate('/', { replace: true });
77+
} else {
78+
setBlockState('allowed');
79+
}
80+
}, [clubDetail, navigate]);
81+
6682
useEffect(() => {
6783
const handleResize = () => {
6884
setShowHeader(window.innerWidth > 500);
@@ -74,7 +90,7 @@ const ClubDetailPage = () => {
7490

7591
useTrackPageView(`ClubDetailPage`, clubDetail?.name);
7692

77-
if (!clubDetail) {
93+
if (!clubDetail || blockState !== 'allowed') {
7894
return null;
7995
}
8096

0 commit comments

Comments
 (0)