X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=resources%2Fjs%2Fcomponents%2Fpages%2FTournament.js;h=aab442346149865aa01f5bc47185a56f6200eede;hb=ccaa2cf99468fea81efdf28aaa3fc72a278a95f6;hp=cdafd69b12c2414140f3dce96d07c87cd2e68bf2;hpb=edd0e97bfdc544114f30bf4c13a929631c44a555;p=alttp.git diff --git a/resources/js/components/pages/Tournament.js b/resources/js/components/pages/Tournament.js index cdafd69..aab4423 100644 --- a/resources/js/components/pages/Tournament.js +++ b/resources/js/components/pages/Tournament.js @@ -7,6 +7,7 @@ import ErrorMessage from '../common/ErrorMessage'; import Loading from '../common/Loading'; import NotFound from '../pages/NotFound'; import Detail from '../tournament/Detail'; +import { patchResult, sortParticipants } from '../../helpers/Tournament'; const Tournament = () => { const params = useParams(); @@ -23,7 +24,7 @@ const Tournament = () => { .then(response => { setError(null); setLoading(false); - setTournament(response.data); + setTournament(sortParticipants(response.data)); }) .catch(error => { setError(error); @@ -32,6 +33,27 @@ const Tournament = () => { }); }, [id]); + useEffect(() => { + window.Echo.private(`Tournament.${id}`) + .listen('ResultReported', e => { + console.log(e); + if (e.result) { + setTournament(tournament => patchResult(tournament, e.result)); + } + }) + .listen('RoundAdded', e => { + if (e.round) { + setTournament(tournament => ({ + ...tournament, + rounds: [...tournament.rounds, e.round], + })); + } + }); + return () => { + window.Echo.leave(`Tournament.${id}`); + }; + }, [id]); + if (loading) { return ; }