@@ -2,15 +2,20 @@ import React, {ReactNode, useEffect, useState} from 'react';
22import { MeetingDto } from '../../dtos/MeetingDto' ;
33import { UserDto } from '../../dtos/UserDto' ;
44import { getUser } from '../../api/UserApi' ;
5- import { getUserIdsForMeeting , joinStudyGroup , leaveStudyGroup } from '../../api/UserGroupApi' ;
5+ import {
6+ getUserIdsForMeeting ,
7+ joinStudyGroup ,
8+ joinSuperStudyGroup ,
9+ leaveStudyGroup ,
10+ leaveSuperStudyGroup
11+ } from '../../api/UserGroupApi' ;
612import axiosInstance from '../../AxiosConfig' ;
713import { CuteButton } from '../CuteButton' ;
814import { Theme , Tooltip } from '@mui/material' ;
915import useMediaQuery from '@mui/material/useMediaQuery' ;
1016
1117interface Props {
1218 meeting : MeetingDto ;
13- isRepeatable ?: boolean ;
1419 isExpanded ?: boolean ;
1520 onToggle ?: ( ) => void ;
1621 children ?: ReactNode ;
@@ -19,7 +24,6 @@ interface Props {
1924export default function MeetingSearchResult (
2025 {
2126 meeting,
22- isRepeatable,
2327 isExpanded,
2428 onToggle
2529 } : Props
@@ -59,17 +63,36 @@ export default function MeetingSearchResult(
5963 . finally ( ( ) => setLoading ( false ) ) ;
6064 } ;
6165
66+ const joinSuperMeeting = ( ) => {
67+ setLoading ( true ) ;
68+ if ( myUserId === undefined ) {
69+ setLoading ( false ) ;
70+ alert ( "userId undefined" ) ;
71+ return ;
72+ }
73+ joinSuperStudyGroup ( axiosInstance , meeting . superId . toString ( ) )
74+ . then ( ( ) => setUserIds ( prev => [ ...prev , myUserId ] ) )
75+ . finally ( ( ) => setLoading ( false ) ) ;
76+ } ;
77+
6278 const leaveMeeting = ( ) => {
6379 setLoading ( true ) ;
6480 leaveStudyGroup ( axiosInstance , meeting . id )
6581 . then ( ( ) => setUserIds ( prev => prev . filter ( id => id !== myUserId ) ) )
6682 . finally ( ( ) => setLoading ( false ) ) ;
6783 } ;
6884
85+ const leaveSuperMeeting = ( ) => {
86+ setLoading ( true ) ;
87+ leaveSuperStudyGroup ( axiosInstance , meeting . superId . toString ( ) )
88+ . then ( ( ) => setUserIds ( prev => prev . filter ( id => id !== myUserId ) ) )
89+ . finally ( ( ) => setLoading ( false ) ) ;
90+ } ;
91+
6992 return (
7093 < div className = "bg-[#333C4F] p-4 flex flex-col gap-4" >
7194 < div className = "min-h-80" >
72- < h2 className = "font-bold text-2xl text-white mb-4 line-clamp-2 h-14" > { meeting . title } </ h2 >
95+ < h2 className = "font-bold text-2xl text-white mb-4 line-clamp-2 h-14" > { meeting . module } </ h2 >
7396
7497 < div className = "flex flex-col gap-4 mb-4" >
7598 < p className = "text-bs font-medium text-white" >
@@ -142,8 +165,8 @@ export default function MeetingSearchResult(
142165 < div className = "flex gap-2 pt-2" >
143166 { ! loading && ! isMember && (
144167 < CuteButton
145- onClick = { joinMeeting }
146- text = { isRepeatable ? 'An allen Meetings teilnehmen' : 'Teilnehmen' }
168+ onClick = { isExpanded == false ? joinSuperMeeting : joinMeeting }
169+ text = { isExpanded == false ? 'An allen Meetings teilnehmen' : 'Teilnehmen' }
147170 textColor = "#e8fcf6"
148171 bgColor = "#56A095"
149172 classname = "text-sm w-full"
@@ -154,8 +177,8 @@ export default function MeetingSearchResult(
154177
155178 { ! loading && isMember && (
156179 < CuteButton
157- onClick = { leaveMeeting }
158- text = { isRepeatable ? 'Alle Meetings verlassen' : 'Meeting verlassen' }
180+ onClick = { isExpanded == false ? leaveSuperMeeting : leaveMeeting }
181+ text = { isExpanded == false ? 'Alle Meetings verlassen' : 'Meeting verlassen' }
159182 textColor = "#e8fcf6"
160183 bgColor = "#974242"
161184 classname = "text-sm w-full"
0 commit comments