X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=resources%2Fjs%2Fcomponents%2Fpages%2FTournament.js;h=d148059fef2cda83250afa2a5e290dbdaaa0e07a;hb=8e274ddec45800cd727bb7138683b81cf2f7dcb1;hp=6e32227ab2d04d330b8025dc16744fdbbee5d606;hpb=920f11ddfeb2175e4e1556886773dcd044c6085b;p=alttp.git diff --git a/resources/js/components/pages/Tournament.js b/resources/js/components/pages/Tournament.js index 6e32227..d148059 100644 --- a/resources/js/components/pages/Tournament.js +++ b/resources/js/components/pages/Tournament.js @@ -1,13 +1,23 @@ import axios from 'axios'; import React, { useEffect, useState } from 'react'; +import { Helmet } from 'react-helmet'; import { useParams } from 'react-router-dom'; +import CanonicalLinks from '../common/CanonicalLinks'; import ErrorBoundary from '../common/ErrorBoundary'; import ErrorMessage from '../common/ErrorMessage'; import Loading from '../common/Loading'; import NotFound from '../pages/NotFound'; import Detail from '../tournament/Detail'; -import { patchResult, patchRound, patchUser, sortParticipants } from '../../helpers/Tournament'; +import { + patchApplication, + patchParticipant, + patchResult, + patchRound, + patchUser, + removeApplication, + sortParticipants, +} from '../../helpers/Tournament'; const Tournament = () => { const params = useParams(); @@ -18,9 +28,10 @@ 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); @@ -31,11 +42,35 @@ const Tournament = () => { setLoading(false); setTournament(null); }); + return () => { + ctrl.abort(); + }; }, [id]); useEffect(() => { window.Echo.channel(`Tournament.${id}`) - .listen('ResultReported', e => { + .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)); + } + }) + .listen('ResultChanged', e => { if (e.result) { setTournament(tournament => patchResult(tournament, e.result)); } @@ -94,6 +129,10 @@ const Tournament = () => { }; return + + {tournament.title} + + ; };