Files
frontend-app-learner-dashboard/src/containers/CourseCard/components/CourseCardActions/hooks.js
Leangseu Kim 7f7625333d chore: update course entitlement
chore: update requested change

chore: move show select session dialog to redux app level
2022-08-04 13:25:21 -04:00

66 lines
1.8 KiB
JavaScript

import { Locked } from '@edx/paragon/icons';
import { useIntl } from '@edx/frontend-platform/i18n';
import { hooks as appHooks } from 'data/redux';
import useSelectSession from 'containers/SelectSession/hooks';
import messages from './messages';
export const useCardActionData = ({ courseNumber }) => {
const { formatMessage } = useIntl();
const {
canUpgrade,
isAudit,
isAuditAccessExpired,
isVerified,
} = appHooks.useCardEnrollmentData(courseNumber);
const { isPending, isArchived } = appHooks.useCardCourseRunData(courseNumber);
const {
isEntitlement,
canViewCourse,
isFulfilled,
isExpired,
canChange,
hasSessions,
} = appHooks.useCardEntitlementsData(courseNumber);
const { openSessionModal } = useSelectSession({ courseNumber });
let primary;
let secondary = null;
if (isEntitlement) {
if (!isFulfilled) {
primary = {
children: formatMessage(messages.selectSession),
disabled: !(canChange && hasSessions),
onClick: openSessionModal,
};
} else {
primary = {
children: formatMessage(messages.viewCourse),
disabled: !canViewCourse || isExpired,
};
}
} else {
if (!isVerified) {
secondary = {
iconBefore: Locked,
variant: 'outline-primary',
disabled: !canUpgrade,
children: formatMessage(messages.upgrade),
};
}
if (isPending) {
primary = { children: formatMessage(messages.beginCourse) };
} else if (!isArchived) {
primary = {
children: formatMessage(messages.resume),
disabled: isAudit && isAuditAccessExpired,
};
} else {
primary = { children: formatMessage(messages.viewCourse) };
}
}
return { primary, secondary };
};
export default useCardActionData;