import Loading from '../common/Loading';
import NotFound from '../pages/NotFound';
import Detail from '../tournament/Detail';
+import { patchResult, patchRound, sortParticipants } from '../../helpers/Tournament';
const Tournament = () => {
const params = useParams();
.then(response => {
setError(null);
setLoading(false);
- setTournament(response.data);
+ setTournament(sortParticipants(response.data));
})
.catch(error => {
setError(error);
});
}, [id]);
+ useEffect(() => {
+ window.Echo.private(`Tournament.${id}`)
+ .listen('ResultReported', e => {
+ if (e.result) {
+ setTournament(tournament => patchResult(tournament, e.result));
+ }
+ })
+ .listen('RoundAdded', e => {
+ if (e.round) {
+ setTournament(tournament => ({
+ ...tournament,
+ rounds: [...tournament.rounds, e.round],
+ }));
+ }
+ })
+ .listen('RoundChanged', e => {
+ if (e.round) {
+ setTournament(tournament => patchRound(tournament, e.round));
+ }
+ });
+ return () => {
+ window.Echo.leave(`Tournament.${id}`);
+ };
+ }, [id]);
+
if (loading) {
return <Loading />;
}