'use server'; import { revalidatePath } from 'next/cache'; import { auth } from '@/lib/auth'; import { shareSession, removeShare, getSessionShares } from '@/services/sessions'; import type { ShareRole } from '@prisma/client'; export async function shareSessionAction( sessionId: string, email: string, role: ShareRole = 'EDITOR' ) { const session = await auth(); if (!session?.user?.id) { return { success: false, error: 'Non authentifié' }; } try { const share = await shareSession(sessionId, session.user.id, email, role); revalidatePath(`/sessions/${sessionId}`); return { success: true, data: share }; } catch (error) { const message = error instanceof Error ? error.message : 'Erreur inconnue'; if (message === 'User not found') { return { success: false, error: 'Aucun utilisateur trouvé avec cet email' }; } if (message === 'Cannot share session with yourself') { return { success: false, error: 'Vous ne pouvez pas partager avec vous-même' }; } return { success: false, error: message }; } } export async function removeShareAction(sessionId: string, shareUserId: string) { const session = await auth(); if (!session?.user?.id) { return { success: false, error: 'Non authentifié' }; } try { await removeShare(sessionId, session.user.id, shareUserId); revalidatePath(`/sessions/${sessionId}`); return { success: true }; } catch (error) { const message = error instanceof Error ? error.message : 'Erreur inconnue'; return { success: false, error: message }; } } export async function getSharesAction(sessionId: string) { const session = await auth(); if (!session?.user?.id) { return { success: false, error: 'Non authentifié', data: [] }; } try { const shares = await getSessionShares(sessionId, session.user.id); return { success: true, data: shares }; } catch (error) { const message = error instanceof Error ? error.message : 'Erreur inconnue'; return { success: false, error: message, data: [] }; } }