Closed bpresles closed 12 months ago
Dans le composant CompetitionJuryForm seul l'id du dernier jury sélectionné est enregistré et envoyé à la blockchain.
CompetitionJuryForm
const [idJury, setIdJury]: any = useState(0); ... const updateIdsJuryCompetition = (e: React.ChangeEvent<HTMLInputElement>) => setIdJury(Number(e.target.value));
Ceci devrait en réalité être une liste d'ids sélectionnés:
const [selectedIdsJury, setSelectedIdsJurys]: any = useState([]); ... const updateIdJuryCompetition = (e: React.ChangeEvent<HTMLInputElement>) => { if (!selectedIdsJury.includes(Number(e.target.value)) setSelectedIdsJury([...selectedIdsJury, Number(e.target.value)); } }
De ce fait, dans la fonction d'ajout des jurys qui appelle le smart contrat, il faudra parcourir la liste:
const addJurysCompetition = async () => { setMinting(true); const signer = await provider?.getSigner(); // building smart contract call const contract = new ethers.Contract(contractsInterface.contracts.Competitions.address, contractsInterface.contracts.Competitions.abi, signer ); for (const idJury of selectedIdsJury) { let transaction; try { transaction = await contract.addJuryToCompetition(tokenId, idJury); } catch(e) { ... } } ... }
Il faut aussi changer l'élément de formulaire en checkbox plutôt que bouton radio:
<input name="jury" type="checkbox" onChange={updateIdsJuryCompetition} value={jurys[jury].id} />
https://github.com/BlockchainEtSociete/DevFest_CodeLabs/pull/30
Dans le composant
CompetitionJuryForm
seul l'id du dernier jury sélectionné est enregistré et envoyé à la blockchain.Ceci devrait en réalité être une liste d'ids sélectionnés:
De ce fait, dans la fonction d'ajout des jurys qui appelle le smart contrat, il faudra parcourir la liste:
Il faut aussi changer l'élément de formulaire en checkbox plutôt que bouton radio: