X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=resources%2Fjs%2Fcomponents%2Frounds%2FItem.js;h=949eeb2f2ec910e99b94ba9bf0a01c67a5549ba3;hb=4c5a82cb876e96c72c50e8bc12bd8a43a9afe847;hp=1b1edb22111233a63d13023a26d94523850cafff;hpb=537b998e8059c56e3a20ee2a89d42c3bbfbb80b8;p=alttp.git diff --git a/resources/js/components/rounds/Item.js b/resources/js/components/rounds/Item.js index 1b1edb2..949eeb2 100644 --- a/resources/js/components/rounds/Item.js +++ b/resources/js/components/rounds/Item.js @@ -1,21 +1,21 @@ import PropTypes from 'prop-types'; import React from 'react'; -import { withTranslation } from 'react-i18next'; +import { useTranslation } from 'react-i18next'; +import EditButton from './EditButton'; import LockButton from './LockButton'; import SeedButton from './SeedButton'; import SeedCode from './SeedCode'; import SeedRolledBy from './SeedRolledBy'; import List from '../results/List'; import ReportButton from '../results/ReportButton'; -import { mayReportResult, isRunner } from '../../helpers/permissions'; +import { mayEditRound, mayReportResult, isRunner } from '../../helpers/permissions'; import { isComplete } from '../../helpers/Round'; import { hasFinishedRound } from '../../helpers/User'; -import { withUser } from '../../helpers/UserContext'; -import i18n from '../../i18n'; +import { useUser } from '../../hooks/user'; const getClassName = (round, tournament, user) => { - const classNames = ['round', 'd-flex']; + const classNames = ['round']; if (round.locked) { classNames.push('is-locked'); } else { @@ -37,41 +37,57 @@ const getClassName = (round, tournament, user) => { const Item = ({ round, tournament, - user, -}) => -
  • -
    -

    - {round.number ? `#${round.number} ` : '#?'} - {i18n.t('rounds.date', { date: new Date(round.created_at) })} -

    -

    - {round.code ? - <> - -
    - - : null} - - {' '} - -

    - {mayReportResult(user, tournament) ? -

    - -

    +}) => { + const { t } = useTranslation(); + const { user } = useUser(); + +return
  • + {round.title ? +

    {round.title}

    : null} - - - -
  • ; +
    +
    +

    + {round.number ? `#${round.number} ` : '#?'} + {t('rounds.date', { date: new Date(round.created_at) })} +

    +

    + {round.code && round.code.length ? + <> + +
    + + : null} + + {' '} + +

    + {mayReportResult(user, tournament) ? +

    + +

    + : null} + {tournament.type === 'open-async' && round.results && round.results.length ? +

    {t('rounds.numberOfResults', { count: round.results.length })}

    + : null} +
    + + {mayEditRound(user, tournament, round) ? + + : null} +
    +
    + +
    + ; +}; Item.propTypes = { round: PropTypes.shape({ @@ -80,14 +96,16 @@ Item.propTypes = { game: PropTypes.string, locked: PropTypes.bool, number: PropTypes.number, + results: PropTypes.arrayOf(PropTypes.shape({ + })), seed: PropTypes.string, + title: PropTypes.string, }), tournament: PropTypes.shape({ participants: PropTypes.arrayOf(PropTypes.shape({ })), - }), - user: PropTypes.shape({ + type: PropTypes.string, }), }; -export default withTranslation()(withUser(Item)); +export default Item;