Migrate from Redux to React Query and React Context. This modernizes state management while maintaining all existing functionality. All the redux code and files were removed, including all redux and related packages.
42 lines
1.3 KiB
JavaScript
42 lines
1.3 KiB
JavaScript
import React from 'react';
|
|
import PropTypes from 'prop-types';
|
|
|
|
import { ActionRow } from '@openedx/paragon';
|
|
|
|
import { useCourseData, useEntitlementInfo } from 'hooks';
|
|
|
|
import CourseCardActionSlot from 'plugin-slots/CourseCardActionSlot';
|
|
import SelectSessionButton from './SelectSessionButton';
|
|
import BeginCourseButton from './BeginCourseButton';
|
|
import ResumeButton from './ResumeButton';
|
|
import ViewCourseButton from './ViewCourseButton';
|
|
|
|
export const CourseCardActions = ({ cardId }) => {
|
|
const cardData = useCourseData(cardId);
|
|
const hasStarted = cardData.enrollment.hasStarted || false;
|
|
const { isEntitlement, isFulfilled } = useEntitlementInfo(cardData);
|
|
const isArchived = cardData.courseRun.isArchived || false;
|
|
|
|
return (
|
|
<ActionRow data-test-id="CourseCardActions">
|
|
<CourseCardActionSlot cardId={cardId} />
|
|
{isEntitlement && (isFulfilled
|
|
? <ViewCourseButton cardId={cardId} />
|
|
: <SelectSessionButton cardId={cardId} />
|
|
)}
|
|
{(isArchived && !isEntitlement) && (
|
|
<ViewCourseButton cardId={cardId} />
|
|
)}
|
|
{!(isArchived || isEntitlement) && (hasStarted
|
|
? <ResumeButton cardId={cardId} />
|
|
: <BeginCourseButton cardId={cardId} />
|
|
)}
|
|
</ActionRow>
|
|
);
|
|
};
|
|
CourseCardActions.propTypes = {
|
|
cardId: PropTypes.string.isRequired,
|
|
};
|
|
|
|
export default CourseCardActions;
|