diff --git a/src/actions/moving-motivators.ts b/src/actions/moving-motivators.ts index e22df7d..a1789a9 100644 --- a/src/actions/moving-motivators.ts +++ b/src/actions/moving-motivators.ts @@ -16,6 +16,16 @@ export async function createMotivatorSession(data: { title: string; participant: try { const motivatorSession = await motivatorsService.createMotivatorSession(session.user.id, data); + try { + await motivatorsService.shareMotivatorSession( + motivatorSession.id, + session.user.id, + data.participant, + 'EDITOR' + ); + } catch (shareError) { + console.error('Auto-share failed:', shareError); + } revalidatePath('/motivators'); return { success: true, data: motivatorSession }; } catch (error) { diff --git a/src/actions/weekly-checkin.ts b/src/actions/weekly-checkin.ts index 5c6cbc2..929721e 100644 --- a/src/actions/weekly-checkin.ts +++ b/src/actions/weekly-checkin.ts @@ -24,6 +24,16 @@ export async function createWeeklyCheckInSession(data: { session.user.id, data ); + try { + await weeklyCheckInService.shareWeeklyCheckInSession( + weeklyCheckInSession.id, + session.user.id, + data.participant, + 'EDITOR' + ); + } catch (shareError) { + console.error('Auto-share failed:', shareError); + } revalidatePath('/weekly-checkin'); revalidatePath('/sessions'); return { success: true, data: weeklyCheckInSession }; diff --git a/src/actions/year-review.ts b/src/actions/year-review.ts index 5e01b84..6eefc69 100644 --- a/src/actions/year-review.ts +++ b/src/actions/year-review.ts @@ -24,6 +24,16 @@ export async function createYearReviewSession(data: { session.user.id, data ); + try { + await yearReviewService.shareYearReviewSession( + yearReviewSession.id, + session.user.id, + data.participant, + 'EDITOR' + ); + } catch (shareError) { + console.error('Auto-share failed:', shareError); + } revalidatePath('/year-review'); revalidatePath('/sessions'); return { success: true, data: yearReviewSession }; diff --git a/src/app/api/sessions/route.ts b/src/app/api/sessions/route.ts index 30d6f03..99ea0b7 100644 --- a/src/app/api/sessions/route.ts +++ b/src/app/api/sessions/route.ts @@ -1,6 +1,7 @@ import { NextResponse } from 'next/server'; import { auth } from '@/lib/auth'; import { prisma } from '@/services/database'; +import { shareSession } from '@/services/sessions'; export async function GET() { try { @@ -56,6 +57,12 @@ export async function POST(request: Request) { }, }); + try { + await shareSession(newSession.id, session.user.id, collaborator, 'EDITOR'); + } catch (shareError) { + console.error('Auto-share failed:', shareError); + } + return NextResponse.json(newSession, { status: 201 }); } catch (error) { console.error('Error creating session:', error); diff --git a/src/app/api/teams/members/route.ts b/src/app/api/teams/members/route.ts new file mode 100644 index 0000000..75089ad --- /dev/null +++ b/src/app/api/teams/members/route.ts @@ -0,0 +1,31 @@ +import { NextResponse } from 'next/server'; +import { auth } from '@/lib/auth'; +import { getUserTeams } from '@/services/teams'; +import { getTeamMembersForShare } from '@/lib/share-utils'; + +export async function GET() { + try { + const session = await auth(); + + if (!session?.user?.id) { + return NextResponse.json({ error: 'Non autorisé' }, { status: 401 }); + } + + const teams = await getUserTeams(session.user.id); + const otherMembers = getTeamMembersForShare(teams, session.user.id); + const currentUser = { + id: session.user.id, + email: session.user.email ?? '', + name: session.user.name ?? null, + }; + const members = [currentUser, ...otherMembers]; + + return NextResponse.json({ members }); + } catch (error) { + console.error('Error fetching team members:', error); + return NextResponse.json( + { error: 'Erreur lors de la récupération des membres' }, + { status: 500 } + ); + } +} diff --git a/src/app/motivators/new/page.tsx b/src/app/motivators/new/page.tsx index 61a113d..ed18583 100644 --- a/src/app/motivators/new/page.tsx +++ b/src/app/motivators/new/page.tsx @@ -10,6 +10,7 @@ import { CardContent, Button, Input, + ParticipantInput, } from '@/components/ui'; import { createMotivatorSession } from '@/actions/moving-motivators'; @@ -72,12 +73,7 @@ export default function NewMotivatorSessionPage() { required /> - +

Comment ça marche ?

diff --git a/src/app/sessions/new/page.tsx b/src/app/sessions/new/page.tsx index 381a732..a56082e 100644 --- a/src/app/sessions/new/page.tsx +++ b/src/app/sessions/new/page.tsx @@ -10,6 +10,7 @@ import { CardContent, Button, Input, + ParticipantInput, } from '@/components/ui'; export default function NewSessionPage() { @@ -82,12 +83,7 @@ export default function NewSessionPage() { required /> - +