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