]> git.localhorst.tv Git - alttp.git/blobdiff - resources/js/components/episodes/Item.js
collapse schedule filter
[alttp.git] / resources / js / components / episodes / Item.js
index 71fe49ed5c6875eb00d34848143160a75576fc02..c911bc3b6e1f54e3ff15d09ceb76de4abbccefd0 100644 (file)
@@ -9,7 +9,7 @@ import Crew from './Crew';
 import MultiLink from './MultiLink';
 import Players from './Players';
 import Icon from '../common/Icon';
-import { canRestreamEpisode } from '../../helpers/permissions';
+import { canApplyForEpisode, canRestreamEpisode } from '../../helpers/permissions';
 import { withUser } from '../../helpers/UserContext';
 
 const isActive = episode => {
@@ -20,7 +20,7 @@ const isActive = episode => {
        return start.isBefore(now) && end.isAfter(now);
 };
 
-const Item = ({ episode, onAddRestream, onEditRestream, user }) => {
+const Item = ({ episode, onAddRestream, onApply, onEditRestream, user }) => {
        const { t } = useTranslation();
 
        const classNames = [
@@ -36,10 +36,19 @@ const Item = ({ episode, onAddRestream, onEditRestream, user }) => {
                classNames.push('is-active');
        }
 
+       const style = React.useMemo(() => {
+               if (episode.event && episode.event.corner) {
+                       return {
+                               backgroundImage: `url(${episode.event.corner})`,
+                       };
+               }
+               return null;
+       }, [episode.event && episode.event.corner]);
+
        const hasChannels = episode.channels && episode.channels.length;
        const hasPlayers = episode.players && episode.players.length;
 
-       return <div className={classNames.join(' ')}>
+       return <div className={classNames.join(' ')} style={style}>
                <div className="episode-start me-3 fs-4 text-end">
                        {t('schedule.startTime', { date: new Date(episode.start) })}
                </div>
@@ -72,11 +81,10 @@ const Item = ({ episode, onAddRestream, onEditRestream, user }) => {
                                                <div>
                                                        <Button
                                                                onClick={() => onAddRestream(episode)}
+                                                               title={t('episodes.addRestream')}
                                                                variant="outline-secondary"
                                                        >
                                                                <Icon.ADD title="" />
-                                                               {' '}
-                                                               {t('episodes.addRestream')}
                                                        </Button>
                                                </div>
                                        : null}
@@ -85,8 +93,10 @@ const Item = ({ episode, onAddRestream, onEditRestream, user }) => {
                        {hasPlayers ?
                                <Players players={episode.players} />
                        : null}
-                       {episode.crew && episode.crew.length ?
-                               <Crew crew={episode.crew} />
+                       {(episode.crew && episode.crew.length)
+                                       || canApplyForEpisode(user, episode, 'commentary')
+                                       || canApplyForEpisode(user, episode, 'tracking') ?
+                               <Crew episode={episode} onApply={onApply} />
                        : null}
                </div>
        </div>;
@@ -99,6 +109,7 @@ Item.propTypes = {
                crew: PropTypes.arrayOf(PropTypes.shape({
                })),
                event: PropTypes.shape({
+                       corner: PropTypes.string,
                        title: PropTypes.string,
                }),
                players: PropTypes.arrayOf(PropTypes.shape({
@@ -107,6 +118,7 @@ Item.propTypes = {
                title: PropTypes.string,
        }),
        onAddRestream: PropTypes.func,
+       onApply: PropTypes.func,
        onEditRestream: PropTypes.func,
        user: PropTypes.shape({
        }),