diff --git a/skills-lock.json b/skills-lock.json index f2f84b5..d3c1bc0 100644 --- a/skills-lock.json +++ b/skills-lock.json @@ -1,18 +1,36 @@ { "version": 1, "skills": { + "frontend-design": { + "source": "anthropics/skills", + "sourceType": "github", + "skillPath": "skills/frontend-design/SKILL.md", + "computedHash": "063a0e6448123cd359ad0044cc46b0e490cc7964d45ef4bb9fd842bd2ffbca67" + }, "grill-me": { "source": "mattpocock/skills", "sourceType": "github", "skillPath": "skills/productivity/grill-me/SKILL.md", "computedHash": "784f0dbb7403b0f00324bce9a112f715342777a0daee7bbb7385f9c6f0a170ea" }, + "improve-codebase-architecture": { + "source": "mattpocock/skills", + "sourceType": "github", + "skillPath": "skills/engineering/improve-codebase-architecture/SKILL.md", + "computedHash": "ef32aea0a8fab9b365ff9e08a95f8d353e20ca21ea46ec2e73587c86dd341351" + }, "pptx": { "source": "anthropics/skills", "sourceType": "github", "skillPath": "skills/pptx/SKILL.md", "computedHash": "6b8b859d26f93aa059c9870d1ab76b44ab69e3d6757ce4a03cc94cb760888073" }, + "shadcn": { + "source": "shadcn/ui", + "sourceType": "github", + "skillPath": "skills/shadcn/SKILL.md", + "computedHash": "80a6226e78f6d1fe464214ae0ef449d49d8ffaa3e7704f011e9b418c678ad4d1" + }, "supabase": { "source": "supabase/agent-skills", "sourceType": "github", diff --git a/src/hooks/useSkillLevels.js b/src/hooks/useSkillLevels.js index 846aa3c..558dfee 100644 --- a/src/hooks/useSkillLevels.js +++ b/src/hooks/useSkillLevels.js @@ -1,5 +1,6 @@ import { useEffect, useState, useCallback, useRef } from 'react' import { supabase } from '@/lib/supabase' +import { toast } from 'sonner' export function useSkillLevels() { const [levels, setLevels] = useState({}) @@ -40,19 +41,22 @@ export function useSkillLevels() { const oldLevel = existing?.level if (existing) { - await supabase.from('skill_levels').update({ level: newLevel }).eq('id', existing.id) + const { error } = await supabase.from('skill_levels').update({ level: newLevel }).eq('id', existing.id) + if (error) { toast.error(error.message); return } } else { - await supabase.from('skill_levels').insert({ member_id: memberId, skill_id: skillId, level: newLevel }) + const { error } = await supabase.from('skill_levels').insert({ member_id: memberId, skill_id: skillId, level: newLevel }) + if (error) { toast.error(error.message); return } } if (oldLevel !== newLevel && changedBy) { - await supabase.from('skill_history').insert({ + const { error } = await supabase.from('skill_history').insert({ member_id: memberId, skill_id: skillId, old_level: oldLevel || null, new_level: newLevel, changed_by: changedBy, }) + if (error) { toast.error(error.message); return } } await fetch() diff --git a/src/pages/AcceptInvite.jsx b/src/pages/AcceptInvite.jsx index 93ee289..c873fc7 100644 --- a/src/pages/AcceptInvite.jsx +++ b/src/pages/AcceptInvite.jsx @@ -58,6 +58,8 @@ export function AcceptInvite() { } await supabase.from('invitations').update({ accepted: true }).eq('token', token) + .then() + .catch(() => {}) toast.success('Compte créé ! Vous pouvez vous connecter.') navigate('/login') diff --git a/src/pages/Members.jsx b/src/pages/Members.jsx index 8e0fa72..997242d 100644 --- a/src/pages/Members.jsx +++ b/src/pages/Members.jsx @@ -25,7 +25,8 @@ export function Members() { } async function updateMember() { - await supabase.from('members').update({ full_name: editName }).eq('id', editMember.id) + const { error } = await supabase.from('members').update({ full_name: editName }).eq('id', editMember.id) + if (error) { toast.error(error.message); return } setEditMember(null) load() toast.success('Membre mis à jour') @@ -33,7 +34,8 @@ export function Members() { async function deleteMember(id) { if (!confirm('Supprimer ce membre ?')) return - await supabase.from('members').delete().eq('id', id) + const { error } = await supabase.from('members').delete().eq('id', id) + if (error) { toast.error(error.message); return } load() toast.success('Membre supprimé') } diff --git a/src/pages/Skills.jsx b/src/pages/Skills.jsx index e09c5fb..5677bba 100644 --- a/src/pages/Skills.jsx +++ b/src/pages/Skills.jsx @@ -22,9 +22,11 @@ export function Skills() { async function saveCategory() { if (editCat) { - await supabase.from('categories').update({ name: newCatName, color: newCatColor }).eq('id', editCat) + const { error } = await supabase.from('categories').update({ name: newCatName, color: newCatColor }).eq('id', editCat) + if (error) { toast.error(error.message); return } } else { - await supabase.from('categories').insert({ name: newCatName, color: newCatColor }) + const { error } = await supabase.from('categories').insert({ name: newCatName, color: newCatColor }) + if (error) { toast.error(error.message); return } } setCatDialogOpen(false) setEditCat(null) @@ -40,7 +42,8 @@ export function Skills() { } async function saveSkill() { - await supabase.from('skills').insert({ name: newSkill.name, category_id: newSkill.category_id }) + const { error } = await supabase.from('skills').insert({ name: newSkill.name, category_id: newSkill.category_id }) + if (error) { toast.error(error.message); return } setSkillDialogOpen(false) setNewSkill({ name: '', category_id: '' }) refetchSkills()