X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=resources%2Fjs%2Fcomponents%2Fpages%2FTournament.js;h=061db2208a8a67ba35ddd05ff9fced3afd1323bf;hb=f446d5bcf3b87bd9443a060e27e9c0601c96fbb9;hp=bc1282e0586fdc351d626eb9ccd1707bdcd1ce8b;hpb=d32516335ea2534e15256c948e9c38d3de40794b;p=alttp.git diff --git a/resources/js/components/pages/Tournament.js b/resources/js/components/pages/Tournament.js index bc1282e..061db22 100644 --- a/resources/js/components/pages/Tournament.js +++ b/resources/js/components/pages/Tournament.js @@ -8,10 +8,12 @@ import Loading from '../common/Loading'; import NotFound from '../pages/NotFound'; import Detail from '../tournament/Detail'; import { + patchApplication, patchParticipant, patchResult, patchRound, patchUser, + removeApplication, sortParticipants, } from '../../helpers/Tournament'; @@ -24,24 +26,45 @@ const Tournament = () => { const [tournament, setTournament] = useState(null); useEffect(() => { + const ctrl = new AbortController(); setLoading(true); axios - .get(`/api/tournaments/${id}`) + .get(`/api/tournaments/${id}`, { signal: ctrl.signal }) .then(response => { setError(null); setLoading(false); setTournament(sortParticipants(response.data)); + window.document.title = response.data.title; }) .catch(error => { setError(error); setLoading(false); setTournament(null); }); + return () => { + ctrl.abort(); + }; }, [id]); useEffect(() => { window.Echo.channel(`Tournament.${id}`) + .listen('ApplicationAdded', e => { + if (e.application) { + setTournament(tournament => patchApplication(tournament, e.application)); + } + }) + .listen('ApplicationChanged', e => { + if (e.application) { + setTournament(tournament => patchApplication(tournament, e.application)); + } + }) + .listen('ApplicationRemoved', e => { + if (e.application_id) { + setTournament(tournament => removeApplication(tournament, e.application_id)); + } + }) .listen('ParticipantChanged', e => { + console.log(e); if (e.participant) { setTournament(tournament => patchParticipant(tournament, e.participant)); }