import React from 'react'; import PropTypes from 'prop-types'; import { Button } from '@edx/paragon'; import classNames from 'classnames'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faChevronLeft, faChevronRight } from '@fortawesome/free-solid-svg-icons'; import { FormattedMessage } from '@edx/frontend-platform/i18n'; import { useSelector } from 'react-redux'; import UnitButton from './UnitButton'; import SequenceNavigationTabs from './SequenceNavigationTabs'; import { useSequenceNavigationMetadata } from './hooks'; import { useModel } from '../../../../generic/model-store'; import { LOADED } from '../../../data/slice'; export default function SequenceNavigation({ unitId, sequenceId, className, onNavigate, nextSequenceHandler, previousSequenceHandler, }) { const sequence = useModel('sequences', sequenceId); const { isFirstUnit, isLastUnit } = useSequenceNavigationMetadata(sequenceId, unitId); const sequenceStatus = useSelector(state => state.courseware.sequenceStatus); const isLocked = sequenceStatus === LOADED ? ( sequence.gatedContent !== undefined && sequence.gatedContent.gated ) : undefined; const renderUnitButtons = () => { if (isLocked) { return ( {}} /> ); } if (sequence.unitIds.length === 0 || unitId === null) { return (
); } return ( ); }; return sequenceStatus === LOADED && ( ); } SequenceNavigation.propTypes = { sequenceId: PropTypes.string.isRequired, unitId: PropTypes.string, className: PropTypes.string, onNavigate: PropTypes.func.isRequired, nextSequenceHandler: PropTypes.func.isRequired, previousSequenceHandler: PropTypes.func.isRequired, }; SequenceNavigation.defaultProps = { className: null, unitId: null, };