44 lines
1.3 KiB
JavaScript
44 lines
1.3 KiB
JavaScript
import { useIntl } from '@edx/frontend-platform/i18n';
|
|
import { hooks as appHooks } from 'data/redux';
|
|
|
|
import * as module from './hooks';
|
|
import messages from './messages';
|
|
|
|
export const useAccessMessage = ({ courseNumber }) => {
|
|
const { formatMessage, formatDate } = useIntl();
|
|
const {
|
|
accessExpirationDate,
|
|
isAudit,
|
|
isAuditAccessExpired,
|
|
} = appHooks.useCardEnrollmentData(courseNumber);
|
|
const { isArchived, endDate } = appHooks.useCardCourseRunData(courseNumber);
|
|
|
|
if (isAudit) {
|
|
return formatMessage(
|
|
isAuditAccessExpired ? messages.accessExpired : messages.accessExpires,
|
|
{ accessExpirationDate: formatDate(accessExpirationDate) },
|
|
);
|
|
}
|
|
|
|
return formatMessage(
|
|
isArchived ? messages.courseEnded : messages.courseEnds,
|
|
{ endDate: formatDate(endDate) },
|
|
);
|
|
};
|
|
|
|
export const useCardData = ({ courseNumber }) => {
|
|
const { formatMessage } = useIntl();
|
|
const { title, bannerUrl } = appHooks.useCardCourseData(courseNumber);
|
|
const providerName = appHooks.useCardProviderData(courseNumber).name;
|
|
|
|
return {
|
|
title,
|
|
bannerUrl,
|
|
providerName: providerName || formatMessage(messages.unknownProviderName),
|
|
accessMessage: module.useAccessMessage({ courseNumber }),
|
|
formatMessage,
|
|
};
|
|
};
|
|
|
|
export default useCardData;
|