fix: cat update/add refresh

This commit is contained in:
Thibaut Valentin 2025-12-27 15:00:50 +01:00
parent e06df24002
commit c47c04c29e
2 changed files with 21 additions and 14 deletions

View File

@ -15,16 +15,16 @@ export function CMAdmin() {
const categoryListener = ({data}) => {
if (!cat || data.id !== cat.id)
return
setCat({
...cat,
setCat(cat_ => ({
...cat_,
name: data.name,
liceName: data.liceName,
type: data.type
})
}))
}
dispatch({type: 'addListener', payload: {callback: categoryListener, code: 'sendCategory'}})
return () => dispatch({type: 'removeListener', payload: categoryListener})
}, []);
}, [cat]);
return <>
<div className="card">
@ -60,8 +60,15 @@ function CategoryHeader({cat, setCatId}) {
data
])
}
const sendAddCategory = ({data}) => {
setCats([...cats, data])
}
dispatch({type: 'addListener', payload: {callback: categoryListener, code: 'sendCategory'}})
return () => dispatch({type: 'removeListener', payload: categoryListener})
dispatch({type: 'addListener', payload: {callback: sendAddCategory, code: 'sendAddCategory'}})
return () => {
dispatch({type: 'removeListener', payload: categoryListener})
dispatch({type: 'removeListener', payload: sendAddCategory})
}
}, [cats]);
useEffect(() => {
@ -88,7 +95,7 @@ function CategoryHeader({cat, setCatId}) {
<div className="col-auto">
<div className="input-group">
<h5 style={{margin: "auto 0.5em auto 0"}}>Edition de la catégorie</h5>
<select className="form-select" onChange={handleCatChange}>
<select className="form-select" onChange={handleCatChange} value={cat?.id || ""}>
{cats && cats.sort((a, b) => a.name.localeCompare(b.name)).map(c => (
<option key={c.id} value={c.id}>{c.name}</option>))}
{cats && <option value={-1}>Nouvelle...</option>}
@ -270,8 +277,6 @@ function ModalContent({state, setCatId, setConfirm, confirmRef}) {
error: 'Erreur lors de la création de la catégorie'
}
).then(id => {
setCatId(id);
if (tournoi) {
const trees = build_tree(size, loserMatch)
console.log("Creating trees for new category:", trees);
@ -282,7 +287,9 @@ function ModalContent({state, setCatId, setConfirm, confirmRef}) {
success: 'Arbres créés !',
error: 'Erreur lors de la création des arbres'
}
)
).finally(() => setCatId(id))
} else {
setCatId(id);
}
})
}

View File

@ -47,10 +47,10 @@ export function CategoryContent({cat, catId, setCat}) {
const treeListener = ({data}) => {
if (!cat || data.length < 1 || data[0].categorie !== cat.id)
return
setCat({
...cat,
trees: data.map(d => from_sendTree(d, true))
})
setCat(cat_ => ({
...cat_,
trees: data.sort((a, b) => a.level - b.level).map(d => from_sendTree(d, true))
}))
let matches2 = [];
let combsToAdd = [];
@ -103,7 +103,7 @@ export function CategoryContent({cat, catId, setCat}) {
name: data.name,
liceName: data.liceName,
type: data.type,
trees: data.trees.map(d => from_sendTree(d, true))
trees: data.trees.sort((a, b) => a.level - b.level).map(d => from_sendTree(d, true))
})
let matches2 = [];