]> git.localhorst.tv Git - alttp.git/blobdiff - resources/js/pages/Tournament.js
limits for huge tournaments
[alttp.git] / resources / js / pages / Tournament.js
index 5de5dbe32758c1215cc48d30c37db0dea946b79c..ecaab6c97807bf1968b7e1732cf8c7d624a0a85b 100644 (file)
@@ -10,6 +10,8 @@ import Loading from '../components/common/Loading';
 import NotFound from '../pages/NotFound';
 import Detail from '../components/tournament/Detail';
 import {
+       canLoadMoreRounds,
+       getLastRound,
        patchApplication,
        patchParticipant,
        patchResult,
@@ -97,6 +99,21 @@ export const Component = () => {
                };
        }, [id]);
 
+       const moreRounds = React.useCallback(async () => {
+               const last_round = getLastRound(tournament);
+               if (!last_round) return;
+               console.log(last_round);
+               const last_known = last_round.number;
+               const rsp = await axios.get(
+                       `/api/tournaments/${id}/more-rounds`,
+                       { params: { last_known } },
+               );
+               setTournament(tournament => ({
+                       ...tournament,
+                       rounds: [...tournament.rounds, ...rsp.data],
+               }));
+       }, [id, tournament]);
+
        useEffect(() => {
                const cb = (e) => {
                        if (e.user) {
@@ -132,6 +149,10 @@ export const Component = () => {
                        <title>{tournament.title}</title>
                </Helmet>
                <CanonicalLinks base={`/tournaments/${tournament.id}`} />
-               <Detail addRound={addRound} tournament={tournament} />
+               <Detail
+                       addRound={addRound}
+                       moreRounds={canLoadMoreRounds(tournament) ? moreRounds : null}
+                       tournament={tournament}
+               />
        </ErrorBoundary>;
 };