diff --git a/src/app/(user-page)/my-meeting/_features/Participated.tsx b/src/app/(user-page)/my-meeting/_features/Participated.tsx index d3245012..3323fd5e 100644 --- a/src/app/(user-page)/my-meeting/_features/Participated.tsx +++ b/src/app/(user-page)/my-meeting/_features/Participated.tsx @@ -86,7 +86,7 @@ const Participated = () => {
{/* 승인 대기중인 모임 섹션 (상단에 배치) */} -

나의 Deving 모임

+

나의 Deving 모임

{meetingData.pages.map((page, pageIdx) => (
{page.content.map((meeting) => ( diff --git a/src/app/meeting/[category]/[id]/page.tsx b/src/app/meeting/[category]/[id]/page.tsx index 7dade9f7..f5280e9f 100644 --- a/src/app/meeting/[category]/[id]/page.tsx +++ b/src/app/meeting/[category]/[id]/page.tsx @@ -15,12 +15,12 @@ import { import { getMeetingDetail, getMeetingDetailManager } from 'service/api/meeting'; import { Paginated } from 'types/meeting'; -import BackButton from '../../_features/BackButton'; import CardWrapper from '../../_features/CardWrapper'; import ContentLabel from '../../_features/ContextLabel'; import MeetingInfo from '../../_features/MeetingInfo'; import ReviewInput from '../../_features/ReviewInput'; import ReviewList from '../../_features/ReviewList'; +import TopSection from '../../_features/TopSection'; import UserInfo from '../../_features/UserInfo'; export default async function page({ params }: { params: { id: string } }) { @@ -52,9 +52,10 @@ export default async function page({ params }: { params: { id: string } }) { return (
- +
+ diff --git a/src/app/meeting/_features/BackButton.tsx b/src/app/meeting/_features/BackButton.tsx deleted file mode 100644 index 07b73dea..00000000 --- a/src/app/meeting/_features/BackButton.tsx +++ /dev/null @@ -1,18 +0,0 @@ -'use client'; - -import { ArrowLeft } from 'lucide-react'; -import { useRouter } from 'next/navigation'; - -const BackButton = () => { - const router = useRouter(); - - return ( -
- router.back()} - /> -
- ); -}; -export default BackButton; diff --git a/src/app/meeting/_features/CardRightSection.tsx b/src/app/meeting/_features/CardRightSection.tsx index 1a947283..4a06b03e 100644 --- a/src/app/meeting/_features/CardRightSection.tsx +++ b/src/app/meeting/_features/CardRightSection.tsx @@ -32,6 +32,7 @@ const CardRightSection = ({ meeting }: { meeting: MeetingDetail }) => { }; const status = meeting.isMeetingManager ? 'LEADER' : meeting.memberStatus; + const isRejected = status === 'REJECTED' || status === 'EXPEL'; return (
@@ -49,6 +50,11 @@ const CardRightSection = ({ meeting }: { meeting: MeetingDetail }) => { + ) : isRejected ? ( + // 거절되거나 추방된 경우 + ) : ['false', 'new user'].includes(status) ? ( meeting.maxMember === meeting.memberCount ? ( // 인원이 다 찬 경우 diff --git a/src/app/meeting/_features/TopSection.tsx b/src/app/meeting/_features/TopSection.tsx new file mode 100644 index 00000000..f8739bb5 --- /dev/null +++ b/src/app/meeting/_features/TopSection.tsx @@ -0,0 +1,41 @@ +'use client'; + +import { useDetailQueries } from '@/hooks/queries/useMeetingQueries'; +import { ArrowLeft, Edit } from 'lucide-react'; +import Link from 'next/link'; +import { useRouter } from 'next/navigation'; + +const TopSection = ({ meetingId }: { meetingId: number }) => { + const router = useRouter(); + + const { data: meeting, isLoading, error } = useDetailQueries(meetingId); + const status = meeting?.isMeetingManager ? 'LEADER' : meeting?.memberStatus; + + if (isLoading || error) { + return null; + } + + return ( +
+
+ router.back()} + /> +
+ + {status === 'LEADER' && ( + +
+
+ +
+

수정하기

+
+ + )} +
+ ); +}; + +export default TopSection;