X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=resources%2Fjs%2Fcomponents%2Fepisodes%2FCrew.js;h=d0698419c35ae2d12dcda568b17d94430b4de900;hb=4c5a82cb876e96c72c50e8bc12bd8a43a9afe847;hp=76a38a6604852733cb38a6fa32a3b44aab0ee51c;hpb=5a575dc29f3af10f1d8e142ff9e1c6ccdfa3b075;p=alttp.git diff --git a/resources/js/components/episodes/Crew.js b/resources/js/components/episodes/Crew.js index 76a38a6..d069841 100644 --- a/resources/js/components/episodes/Crew.js +++ b/resources/js/components/episodes/Crew.js @@ -6,11 +6,18 @@ import { useTranslation } from 'react-i18next'; import CrewMember from './CrewMember'; import Icon from '../common/Icon'; import { compareCrew } from '../../helpers/Crew'; +import { + getSGLanguages, + getSGSignupLink, + hasPassed, + hasSGRestream, +} from '../../helpers/Episode'; import { canApplyForEpisode } from '../../helpers/permissions'; -import { withUser } from '../../helpers/UserContext'; +import { useUser } from '../../hooks/user'; -const Crew = ({ episode, onApply, user }) => { +const Crew = ({ episode, onApply }) => { const { t } = useTranslation(); + const { user } = useUser(); const commentators = React.useMemo(() => episode.crew.filter(c => c.role === 'commentary').sort(compareCrew) @@ -22,10 +29,28 @@ const Crew = ({ episode, onApply, user }) => { episode.crew.filter(c => c.role === 'setup').sort(compareCrew) , [episode]); + const sgLanguages = React.useMemo(() => + getSGLanguages(episode) + , [episode]); + + const showCommentators = React.useMemo(() => + commentators.length || (!hasPassed(episode) && ( + canApplyForEpisode(user, episode, 'commentary') || + hasSGRestream(episode) + )) + , [commentators, episode, user]); + + const showTracker = React.useMemo(() => + trackers.length || (!hasPassed(episode) && ( + canApplyForEpisode(user, episode, 'tracking') || + hasSGRestream(episode) + )) + , [episode, trackers, user]); + return - {commentators.length || canApplyForEpisode(user, episode, 'commentary') ? - -
+ {showCommentators ? + +
{t('episodes.commentary')}
@@ -42,11 +67,25 @@ const Crew = ({ episode, onApply, user }) => {
: null} + {hasSGRestream(episode) ? +
+ {sgLanguages.map(lang => + + )} +
+ : null} : null} - {trackers.length || canApplyForEpisode(user, episode, 'tracking') ? - -
+ {showTracker ? + +
{t('episodes.tracking')}
@@ -63,11 +102,25 @@ const Crew = ({ episode, onApply, user }) => {
: null} + {hasSGRestream(episode) ? +
+ {sgLanguages.map(lang => + + )} +
+ : null} : null} {techies.length ? - -
+ +
{t('episodes.setup')}
@@ -88,8 +141,6 @@ Crew.propTypes = { })), }), onApply: PropTypes.func, - user: PropTypes.shape({ - }), }; -export default withUser(Crew); +export default Crew;