diff --git a/src/containers/CourseCard/components/hooks.js b/src/containers/CourseCard/components/hooks.js index 9d80c0ae..2c83b2d5 100644 --- a/src/containers/CourseCard/components/hooks.js +++ b/src/containers/CourseCard/components/hooks.js @@ -3,18 +3,36 @@ import { reduxHooks } from 'hooks'; export const useActionDisabledState = (cardId) => { const { isMasquerading } = reduxHooks.useMasqueradeData(); const { - hasAccess, isAudit, isAuditAccessExpired, + hasAccess, isAudit, isAuditAccessExpired, coursewareAccess, } = reduxHooks.useCardEnrollmentData(cardId); + const { isEntitlement, isFulfilled, canChange, hasSessions, } = reduxHooks.useCardEntitlementData(cardId); const { resumeUrl, homeUrl } = reduxHooks.useCardCourseRunData(cardId); - const disableBeginCourse = !homeUrl || (isMasquerading || !hasAccess || (isAudit && isAuditAccessExpired)); - const disableResumeCourse = !resumeUrl || (isMasquerading || !hasAccess || (isAudit && isAuditAccessExpired)); - const disableViewCourse = !hasAccess || (isAudit && isAuditAccessExpired); - const disableSelectSession = !isEntitlement || isMasquerading || !hasAccess || (!canChange || !hasSessions); + const blockedByPrereqs = Boolean(coursewareAccess?.hasUnmetPrerequisites); + + const disableBeginCourse = !homeUrl + || isMasquerading + || !hasAccess + || (isAudit && isAuditAccessExpired) + || blockedByPrereqs; + + const disableResumeCourse = !resumeUrl + || (isMasquerading + || !hasAccess + || (isAudit && isAuditAccessExpired)) + || blockedByPrereqs; + + const disableViewCourse = !hasAccess || (isAudit && isAuditAccessExpired) || blockedByPrereqs; + + const disableSelectSession = !isEntitlement + || isMasquerading + || !hasAccess + || (!canChange || !hasSessions) + || blockedByPrereqs; const disableCourseTitle = (isEntitlement && !isFulfilled) || disableViewCourse; @@ -24,6 +42,7 @@ export const useActionDisabledState = (cardId) => { disableViewCourse, disableSelectSession, disableCourseTitle, + blockedByPrereqs, }; };