feat: add multiple skills addition and optimize evaluation handling

- Introduced `addMultipleSkillsToEvaluation` function in `EvaluationClientWrapper` for batch skill addition.
- Updated `SkillEvaluation` and `SkillSelector` components to utilize the new multiple skills addition feature.
- Implemented optimistic UI updates for skill level, mentor status, and learning status changes, enhancing user experience.
- Refactored evaluation state management to improve performance and maintainability.
- Added error handling and rollback mechanisms for better reliability during API interactions.
This commit is contained in:
Julien Froidefond
2025-08-21 15:07:57 +02:00
parent 2faa998cbe
commit dad172157b
4 changed files with 378 additions and 38 deletions

View File

@@ -23,12 +23,17 @@ export function SkillEvaluation({
evaluations,
}: SkillEvaluationProps) {
const {
currentEvaluation: contextEvaluation,
updateSkillLevel,
updateSkillMentorStatus,
updateSkillLearningStatus,
addSkillToEvaluation,
addMultipleSkillsToEvaluation,
removeSkillFromEvaluation,
} = useEvaluationContext();
// Utiliser l'évaluation du contexte (avec état optimiste) ou celle des props (SSR)
const activeEvaluations = contextEvaluation?.evaluations || evaluations;
const searchParams = useSearchParams();
const router = useRouter();
const categoryParam = searchParams.get("category");
@@ -57,7 +62,7 @@ export function SkillEvaluation({
const currentCategory = categories.find(
(cat) => cat.category === selectedCategory
);
const currentEvaluation = evaluations.find(
const currentEvaluation = activeEvaluations.find(
(evaluation) => evaluation.category === selectedCategory
);
@@ -85,9 +90,10 @@ export function SkillEvaluation({
<div className="space-y-8">
<SkillSelector
categories={categories}
evaluations={evaluations}
evaluations={activeEvaluations}
selectedCategory={selectedCategory}
onAddSkill={addSkillToEvaluation}
onAddMultipleSkills={addMultipleSkillsToEvaluation}
onRemoveSkill={removeSkillFromEvaluation}
/>