Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | import { GroupListItemResponse } from '@/types/service/group'; import { type TabType } from '../constants'; import { ScheduleCard } from './schedule-card/card'; interface Props { group: GroupListItemResponse[]; tabType: TabType; showActions: boolean; } export const ScheduleListContent = ({ group, tabType, showActions }: Props) => { return ( <div className='flex w-full flex-col gap-4' aria-label='모임 목록' role='list'> {group.map((group) => { const groupId = String(group.id); const myMembership = group.myMembership; const isPending = myMembership?.status === 'PENDING'; const isFinished = group.status === 'FINISHED'; const isHost = myMembership?.role === 'HOST'; const createdBy = group.createdBy; const shouldFetchChatRoomId = showActions && !isPending && !isFinished; return ( <ScheduleCard key={group.id} createdBy={createdBy} group={group} groupId={groupId} isFinished={isFinished} isHost={isHost} isPending={isPending} joinPolicy={group.joinPolicy} modalType={getModalType(group, tabType)} shouldFetchChatRoomId={shouldFetchChatRoomId} showActions={showActions} tabType={tabType} /> ); })} </div> ); }; const getModalType = ( group: GroupListItemResponse, tabType: TabType, ): 'pending' | 'leave' | 'delete' => { if (tabType === 'myPost' || (tabType === 'current' && group.myMembership?.role === 'HOST')) { return 'delete'; } if (tabType === 'current' && group.myMembership?.status === 'PENDING') { return 'pending'; } return 'leave'; }; |