feat: integrate user team retrieval into session components, enhancing sharing functionality and user experience across motivators, sessions, weekly check-ins, and year reviews
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 2m35s

This commit is contained in:
Julien Froidefond
2026-02-17 14:47:43 +01:00
parent 4d04d3ede8
commit d05157d498
19 changed files with 345 additions and 892 deletions

View File

@@ -3,7 +3,9 @@
import { useState, useCallback } from 'react';
import { useYearReviewLive, type YearReviewLiveEvent } from '@/hooks/useYearReviewLive';
import { LiveIndicator } from '@/components/collaboration/LiveIndicator';
import { YearReviewShareModal } from './YearReviewShareModal';
import { ShareModal } from '@/components/collaboration/ShareModal';
import { shareYearReviewSession, removeYearReviewShare } from '@/actions/year-review';
import type { TeamWithMembers } from '@/lib/share-utils';
import { Button } from '@/components/ui/Button';
import { Avatar } from '@/components/ui/Avatar';
import type { ShareRole } from '@prisma/client';
@@ -28,6 +30,7 @@ interface YearReviewLiveWrapperProps {
shares: Share[];
isOwner: boolean;
canEdit: boolean;
userTeams?: TeamWithMembers[];
children: React.ReactNode;
}
@@ -38,6 +41,7 @@ export function YearReviewLiveWrapper({
shares,
isOwner,
canEdit,
userTeams = [],
children,
}: YearReviewLiveWrapperProps) {
const [shareModalOpen, setShareModalOpen] = useState(false);
@@ -119,13 +123,25 @@ export function YearReviewLiveWrapper({
<div className={!canEdit ? 'pointer-events-none opacity-90' : ''}>{children}</div>
{/* Share Modal */}
<YearReviewShareModal
<ShareModal
isOpen={shareModalOpen}
onClose={() => setShareModalOpen(false)}
sessionId={sessionId}
title="Partager le bilan"
sessionSubtitle="Bilan annuel"
sessionTitle={sessionTitle}
shares={shares}
isOwner={isOwner}
userTeams={userTeams}
currentUserId={currentUserId}
onShareWithEmail={(email, role) => shareYearReviewSession(sessionId, email, role)}
onRemoveShare={(userId) => removeYearReviewShare(sessionId, userId)}
helpText={
<>
<strong>Éditeur</strong> : peut modifier les items et leurs catégories
<br />
<strong>Lecteur</strong> : peut uniquement consulter
</>
}
/>
</>
);