X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=resources%2Fjs%2Fcomponents%2Fpages%2FTournament.js;h=440e53af5803cddc65af01287617d47645c6383d;hb=3a774bb649734fc3a2135ec1b52cef9a049880ee;hp=5a9c8b05c207ce74db4c159559bdef5b5511b106;hpb=a907ef7c6676fef11f42933b2d79bdd496b20122;p=alttp.git diff --git a/resources/js/components/pages/Tournament.js b/resources/js/components/pages/Tournament.js index 5a9c8b0..440e53a 100644 --- a/resources/js/components/pages/Tournament.js +++ b/resources/js/components/pages/Tournament.js @@ -7,7 +7,14 @@ import ErrorMessage from '../common/ErrorMessage'; import Loading from '../common/Loading'; import NotFound from '../pages/NotFound'; import Detail from '../tournament/Detail'; -import { patchResult, patchRound, sortParticipants } from '../../helpers/Tournament'; +import { + patchApplication, + patchParticipant, + patchResult, + patchRound, + patchUser, + sortParticipants, +} from '../../helpers/Tournament'; const Tournament = () => { const params = useParams(); @@ -34,9 +41,23 @@ const Tournament = () => { }, [id]); useEffect(() => { - window.Echo.private(`Tournament.${id}`) - .listen('ResultReported', e => { - console.log(e); + 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('ParticipantChanged', e => { + if (e.participant) { + setTournament(tournament => patchParticipant(tournament, e.participant)); + } + }) + .listen('ResultChanged', e => { if (e.result) { setTournament(tournament => patchResult(tournament, e.result)); } @@ -45,7 +66,7 @@ const Tournament = () => { if (e.round) { setTournament(tournament => ({ ...tournament, - rounds: [...tournament.rounds, e.round], + rounds: [e.round, ...tournament.rounds], })); } }) @@ -53,12 +74,31 @@ const Tournament = () => { if (e.round) { setTournament(tournament => patchRound(tournament, e.round)); } + }) + .listen('TournamentChanged', e => { + if (e.tournament) { + setTournament(tournament => ({ ...tournament, ...e.tournament })); + } }); return () => { window.Echo.leave(`Tournament.${id}`); }; }, [id]); + useEffect(() => { + const cb = (e) => { + if (e.user) { + setTournament(tournament => patchUser(tournament, e.user)); + } + }; + window.Echo.channel('App.Control') + .listen('UserChanged', cb); + return () => { + window.Echo.channel('App.Control') + .stopListening('UserChanged', cb); + }; + }, []); + if (loading) { return ; }