]> git.localhorst.tv Git - alttp.git/blobdiff - resources/js/pages/Event.js
improved user context
[alttp.git] / resources / js / pages / Event.js
index 6e1dc46badf1e4eb55e5897baea36c7d84623672..70b3beffa021d489bc463697ed2a6aea8612221b 100644 (file)
@@ -15,16 +15,18 @@ import Loading from '../components/common/Loading';
 import EpisodeList from '../components/episodes/List';
 import Detail from '../components/events/Detail';
 import Dialog from '../components/techniques/Dialog';
+import { hasConcluded } from '../helpers/Event';
 import {
        mayEditContent,
 } from '../helpers/permissions';
-import { useUser } from '../helpers/UserContext';
+import { getTranslation } from '../helpers/Technique';
+import { useUser } from '../hooks/user';
 import i18n from '../i18n';
 
 const Event = () => {
        const params = useParams();
        const { name } = params;
-       const user = useUser();
+       const { user } = useUser();
 
        const [error, setError] = React.useState(null);
        const [loading, setLoading] = React.useState(true);
@@ -46,13 +48,19 @@ const Event = () => {
                        setEpisodes([]);
                        return;
                }
+               const params = {
+                       event: [event.id],
+               };
+               if (hasConcluded(event)) {
+                       params.limit = 25;
+                       params.reverse = '1';
+               } else {
+                       params.after = moment().subtract(3, 'hours').toISOString();
+                       params.before = moment().add(14, 'days').toISOString();
+               }
                axios.get(`/api/episodes`, {
                        signal: controller.signal,
-                       params: {
-                               after: moment().subtract(3, 'hours').toISOString(),
-                               before: moment().add(14, 'days').toISOString(),
-                               event: [event.id],
-                       },
+                       params,
                }).then(response => {
                        setEpisodes(response.data || []);
                }).catch(e => {
@@ -125,13 +133,27 @@ const Event = () => {
 
        return <ErrorBoundary>
                <Helmet>
-                       <title>{event.title}</title>
+                       <title>
+                               {(event.description && getTranslation(event.description, 'title', i18n.language))
+                                       || event.title}
+                       </title>
                </Helmet>
+               {event.description ? <Helmet>
+                       <meta
+                               name="description"
+                               content={getTranslation(event.description, 'short', i18n.language)}
+                       />
+               </Helmet> : null}
                <CanonicalLinks base={`/events/${event.name}`} />
                <Container>
                        <Detail actions={actions} event={event} />
                        {episodes.length ? <>
-                               <h2>{i18n.t('events.upcomingEpisodes')}</h2>
+                               <h2 className="mt-4">
+                                       {i18n.t(hasConcluded(event)
+                                               ? 'events.pastEpisodes'
+                                               : 'events.upcomingEpisodes'
+                                       )}
+                               </h2>
                                <EpisodeList episodes={episodes} />
                        </> : null}
                </Container>