]> git.localhorst.tv Git - alttp.git/blobdiff - resources/js/components/pages/Schedule.js
schedule event filter
[alttp.git] / resources / js / components / pages / Schedule.js
index 2e97af9e4437ba6ee49cb5b646a5ff920e482644..0e0170154e8ae8e86c4948f256a797d0d8fe28cd 100644 (file)
@@ -1,7 +1,7 @@
 import axios from 'axios';
 import moment from 'moment';
 import React from 'react';
-import { Container } from 'react-bootstrap';
+import { Alert, Container } from 'react-bootstrap';
 import { Helmet } from 'react-helmet';
 import { useTranslation } from 'react-i18next';
 
@@ -11,7 +11,7 @@ import Filter from '../episodes/Filter';
 import List from '../episodes/List';
 
 const Schedule = () => {
-       const [ahead, setAhead] = React.useState(6);
+       const [ahead, setAhead] = React.useState(14);
        const [behind, setBehind] = React.useState(0);
        const [episodes, setEpisodes] = React.useState([]);
        const [filter, setFilter] = React.useState({});
@@ -30,7 +30,7 @@ const Schedule = () => {
        const updateFilter = React.useCallback(newFilter => {
                localStorage.setItem('episodes.filter.schedule', JSON.stringify(newFilter));
                setFilter(newFilter);
-       }, [setFilter]);
+       }, []);
 
        const fetchEpisodes = React.useCallback((controller, ahead, behind, filter) => {
                axios.get(`/api/episodes`, {
@@ -47,7 +47,7 @@ const Schedule = () => {
                                console.error(e);
                        }
                });
-       }, [setEpisodes]);
+       }, []);
 
        React.useEffect(() => {
                const controller = new AbortController();
@@ -67,10 +67,20 @@ const Schedule = () => {
                        <meta name="description" content={t('schedule.description')} />
                </Helmet>
                <CanonicalLinks base="/schedule" />
-               <h1>{t('schedule.heading')}</h1>
+               <div className="d-flex align-items-start justify-content-between">
+                       <h1>{t('schedule.heading')}</h1>
+                       <div className="mt-5">
+                               <Filter filter={filter} setFilter={updateFilter} />
+                       </div>
+               </div>
                <ErrorBoundary>
-                       <Filter filter={filter} setFilter={updateFilter} />
-                       <List episodes={episodes} />
+                       {episodes.length ?
+                               <List episodes={episodes} />
+                       :
+                               <Alert variant="info">
+                                       {t('episodes.empty')}
+                               </Alert>
+                       }
                </ErrorBoundary>
        </Container>;
 };