diff --git a/src/advanced-settings/__mocks__/advancedSettings.js b/src/advanced-settings/__mocks__/advancedSettings.ts similarity index 96% rename from src/advanced-settings/__mocks__/advancedSettings.js rename to src/advanced-settings/__mocks__/advancedSettings.ts index ead6c3528..8d1deaf88 100644 --- a/src/advanced-settings/__mocks__/advancedSettings.js +++ b/src/advanced-settings/__mocks__/advancedSettings.ts @@ -1,4 +1,4 @@ -module.exports = { +export default { advancedModules: { deprecated: false, displayName: 'Advanced Module List', diff --git a/src/advanced-settings/__mocks__/index.js b/src/advanced-settings/__mocks__/index.ts similarity index 100% rename from src/advanced-settings/__mocks__/index.js rename to src/advanced-settings/__mocks__/index.ts diff --git a/src/advanced-settings/index.js b/src/advanced-settings/index.ts similarity index 100% rename from src/advanced-settings/index.js rename to src/advanced-settings/index.ts diff --git a/src/certificates/__mocks__/certificates.js b/src/certificates/__mocks__/certificates.ts similarity index 96% rename from src/certificates/__mocks__/certificates.js rename to src/certificates/__mocks__/certificates.ts index 850c1ee0d..d75c4aa67 100644 --- a/src/certificates/__mocks__/certificates.js +++ b/src/certificates/__mocks__/certificates.ts @@ -1,4 +1,4 @@ -module.exports = [ +export default [ { id: 1, courseTitle: 'Course Title 1', diff --git a/src/certificates/__mocks__/certificatesData.js b/src/certificates/__mocks__/certificatesData.ts similarity index 98% rename from src/certificates/__mocks__/certificatesData.js rename to src/certificates/__mocks__/certificatesData.ts index 20be2e9d0..bc97c2127 100644 --- a/src/certificates/__mocks__/certificatesData.js +++ b/src/certificates/__mocks__/certificatesData.ts @@ -1,4 +1,4 @@ -module.exports = { +export default { certificateActivationHandlerUrl: '/certificates/activation/course-v1:org+101+101/', certificateWebViewUrl: '//certificates/course/course-v1:org+101+101?preview=honor', certificates: [ diff --git a/src/certificates/__mocks__/index.js b/src/certificates/__mocks__/index.ts similarity index 100% rename from src/certificates/__mocks__/index.js rename to src/certificates/__mocks__/index.ts diff --git a/src/certificates/__mocks__/signatories.js b/src/certificates/__mocks__/signatories.ts similarity index 93% rename from src/certificates/__mocks__/signatories.js rename to src/certificates/__mocks__/signatories.ts index 8deb4abe6..6d9dd96ca 100644 --- a/src/certificates/__mocks__/signatories.js +++ b/src/certificates/__mocks__/signatories.ts @@ -1,4 +1,4 @@ -module.exports = [ +export default [ { id: '1', name: 'John Doe', title: 'CEO', organization: 'Company', signatureImagePath: '/path/to/signature1.png', }, diff --git a/src/certificates/data/api.js b/src/certificates/data/api.ts similarity index 55% rename from src/certificates/data/api.js rename to src/certificates/data/api.ts index 2a407b0a5..02cfeb7f9 100644 --- a/src/certificates/data/api.js +++ b/src/certificates/data/api.ts @@ -5,17 +5,15 @@ import { prepareCertificatePayload } from '../utils'; const getApiBaseUrl = () => getConfig().STUDIO_BASE_URL; -export const getCertificatesApiUrl = (courseId) => `${getApiBaseUrl()}/api/contentstore/v1/certificates/${courseId}`; -export const getCertificateApiUrl = (courseId) => `${getApiBaseUrl()}/certificates/${courseId}`; -export const getUpdateCertificateApiUrl = (courseId, certificateId) => `${getCertificateApiUrl(courseId)}/${certificateId}`; -export const getUpdateCertificateActiveStatusApiUrl = (path) => `${getApiBaseUrl()}${path}`; +export const getCertificatesApiUrl = (courseId: string) => `${getApiBaseUrl()}/api/contentstore/v1/certificates/${courseId}`; +export const getCertificateApiUrl = (courseId: string) => `${getApiBaseUrl()}/certificates/${courseId}`; +export const getUpdateCertificateApiUrl = (courseId: string, certificateId: number) => `${getCertificateApiUrl(courseId)}/${certificateId}`; +export const getUpdateCertificateActiveStatusApiUrl = (path: string) => `${getApiBaseUrl()}${path}`; /** * Gets certificates for a course. - * @param {string} courseId - * @returns {Promise} */ -export async function getCertificates(courseId) { +export async function getCertificates(courseId: string): Promise> { const { data } = await getAuthenticatedHttpClient() .get(getCertificatesApiUrl(courseId)); @@ -24,12 +22,11 @@ export async function getCertificates(courseId) { /** * Create course certificate. - * @param {string} courseId - * @param {object} certificatesData - * @returns {Promise} */ - -export async function createCertificate(courseId, certificatesData) { +export async function createCertificate( + courseId: string, + certificatesData: Record, +): Promise> { const { data } = await getAuthenticatedHttpClient() .post( getCertificateApiUrl(courseId), @@ -41,11 +38,11 @@ export async function createCertificate(courseId, certificatesData) { /** * Update course certificate. - * @param {string} courseId - * @param {object} certificateData - * @returns {Promise} */ -export async function updateCertificate(courseId, certificateData) { +export async function updateCertificate( + courseId: string, + certificateData: Record, +): Promise> { const { data } = await getAuthenticatedHttpClient() .post( getUpdateCertificateApiUrl(courseId, certificateData.id), @@ -57,11 +54,8 @@ export async function updateCertificate(courseId, certificateData) { /** * Delete course certificate. - * @param {string} courseId - * @param {object} certificateId - * @returns {Promise} */ -export async function deleteCertificate(courseId, certificateId) { +export async function deleteCertificate(courseId: string, certificateId: number): Promise> { const { data } = await getAuthenticatedHttpClient() .delete( getUpdateCertificateApiUrl(courseId, certificateId), @@ -71,11 +65,8 @@ export async function deleteCertificate(courseId, certificateId) { /** * Activate/deactivate course certificate. - * @param {string} courseId - * @param {object} activationStatus - * @returns {Promise} */ -export async function updateActiveStatus(path, activationStatus) { +export async function updateActiveStatus(path: string, activationStatus: unknown): Promise> { const body = { is_active: activationStatus, }; diff --git a/src/certificates/data/constants.js b/src/certificates/data/constants.ts similarity index 95% rename from src/certificates/data/constants.js rename to src/certificates/data/constants.ts index 374875cc5..813e3d744 100644 --- a/src/certificates/data/constants.js +++ b/src/certificates/data/constants.ts @@ -4,7 +4,7 @@ export const MODE_STATES = { view: 'view', editAll: 'edit_all', create: 'create', -}; +} as const; export const ACTIVATION_MESSAGES = { activating: 'Activating', diff --git a/src/certificates/data/selectors.js b/src/certificates/data/selectors.js deleted file mode 100644 index 4e2cfdacc..000000000 --- a/src/certificates/data/selectors.js +++ /dev/null @@ -1,22 +0,0 @@ -import { createSelector } from '@reduxjs/toolkit'; - -export const getLoadingStatus = (state) => state.certificates.loadingStatus; -export const getSavingStatus = (state) => state.certificates.savingStatus; -export const getSavingImageStatus = (state) => state.certificates.savingImageStatus; -export const getErrorMessage = (state) => state.certificates.errorMessage; -export const getSendRequestErrors = (state) => state.certificates.sendRequestErrors.developer_message; -export const getCertificates = state => state.certificates.certificatesData.certificates; -export const getHasCertificateModes = state => state.certificates.certificatesData.hasCertificateModes; -export const getCourseModes = state => state.certificates.certificatesData.courseModes; -export const getCertificateActivationUrl = state => state.certificates.certificatesData.certificateActivationHandlerUrl; -export const getCertificateWebViewUrl = state => state.certificates.certificatesData.certificateWebViewUrl; -export const getIsCertificateActive = state => state.certificates.certificatesData.isActive; -export const getComponentMode = state => state.certificates.componentMode; -export const getCourseNumber = state => state.certificates.certificatesData.courseNumber; -export const getCourseNumberOverride = state => state.certificates.certificatesData.courseNumberOverride; -export const getCourseTitle = state => state.certificates.certificatesData.courseTitle; - -export const getHasCertificates = createSelector( - [getCertificates], - (certificates) => certificates && certificates.length > 0, -); diff --git a/src/certificates/data/selectors.ts b/src/certificates/data/selectors.ts new file mode 100644 index 000000000..303839cd7 --- /dev/null +++ b/src/certificates/data/selectors.ts @@ -0,0 +1,25 @@ +/* eslint-disable max-len */ +import { createSelector } from '@reduxjs/toolkit'; +import type { DeprecatedReduxState } from '@src/store'; + +export const getLoadingStatus = (state: DeprecatedReduxState) => state.certificates.loadingStatus; +export const getSavingStatus = (state: DeprecatedReduxState) => state.certificates.savingStatus; +export const getSavingImageStatus = (state: DeprecatedReduxState) => state.certificates.savingImageStatus; +export const getErrorMessage = (state: DeprecatedReduxState) => state.certificates.errorMessage; +// Commenting this one out as it seems to be unused: +// export const getSendRequestErrors = (state: DeprecatedReduxState) => state.certificates.sendRequestErrors.developer_message; +export const getCertificates = (state: DeprecatedReduxState) => state.certificates.certificatesData.certificates; +export const getHasCertificateModes = (state: DeprecatedReduxState) => state.certificates.certificatesData.hasCertificateModes; +export const getCourseModes = (state: DeprecatedReduxState) => state.certificates.certificatesData.courseModes; +export const getCertificateActivationUrl = (state: DeprecatedReduxState) => state.certificates.certificatesData.certificateActivationHandlerUrl; +export const getCertificateWebViewUrl = (state: DeprecatedReduxState) => state.certificates.certificatesData.certificateWebViewUrl; +export const getIsCertificateActive = (state: DeprecatedReduxState) => state.certificates.certificatesData.isActive; +export const getComponentMode = (state: DeprecatedReduxState) => state.certificates.componentMode; +export const getCourseNumber = (state: DeprecatedReduxState) => state.certificates.certificatesData.courseNumber; +export const getCourseNumberOverride = (state: DeprecatedReduxState) => state.certificates.certificatesData.courseNumberOverride; +export const getCourseTitle = (state: DeprecatedReduxState) => state.certificates.certificatesData.courseTitle; + +export const getHasCertificates = createSelector( + [getCertificates], + (certificates) => certificates && certificates.length > 0, +); diff --git a/src/certificates/data/slice.js b/src/certificates/data/slice.ts similarity index 97% rename from src/certificates/data/slice.js rename to src/certificates/data/slice.ts index 822893c26..fb0ec0e05 100644 --- a/src/certificates/data/slice.js +++ b/src/certificates/data/slice.ts @@ -7,7 +7,7 @@ import { MODE_STATES } from './constants'; const slice = createSlice({ name: 'certificates', initialState: { - certificatesData: {}, + certificatesData: {} as Record, componentMode: MODE_STATES.noModes, loadingStatus: RequestStatus.PENDING, savingStatus: '', diff --git a/src/certificates/data/thunks.js b/src/certificates/data/thunks.ts similarity index 95% rename from src/certificates/data/thunks.js rename to src/certificates/data/thunks.ts index 737e261d9..213a61e24 100644 --- a/src/certificates/data/thunks.js +++ b/src/certificates/data/thunks.ts @@ -32,7 +32,7 @@ export function fetchCertificates(courseId) { dispatch(fetchCertificatesSuccess(certificates)); dispatch(updateLoadingStatus({ status: RequestStatus.SUCCESSFUL })); - } catch (error) { + } catch (error: any) { if (error.response && error.response.status === 403) { dispatch(updateLoadingStatus({ courseId, status: RequestStatus.DENIED })); } else { @@ -84,8 +84,8 @@ export function deleteCourseCertificate(courseId, certificateId) { dispatch(showProcessingNotification(NOTIFICATION_MESSAGES.deleting)); try { - const certificatesValues = await deleteCertificate(courseId, certificateId); - dispatch(deleteCertificateSuccess(certificatesValues)); + await deleteCertificate(courseId, certificateId); + dispatch(deleteCertificateSuccess()); dispatch(updateSavingStatus({ status: RequestStatus.SUCCESSFUL })); return true; } catch (error) { diff --git a/src/certificates/index.js b/src/certificates/index.ts similarity index 100% rename from src/certificates/index.js rename to src/certificates/index.ts diff --git a/src/content-tags-drawer/__mocks__/contentDataMock.js b/src/content-tags-drawer/__mocks__/contentDataMock.ts similarity index 98% rename from src/content-tags-drawer/__mocks__/contentDataMock.js rename to src/content-tags-drawer/__mocks__/contentDataMock.ts index 292efc38d..a7c1bb247 100644 --- a/src/content-tags-drawer/__mocks__/contentDataMock.js +++ b/src/content-tags-drawer/__mocks__/contentDataMock.ts @@ -1,4 +1,4 @@ -module.exports = { +export default { id: 'block-v1:SampleTaxonomyOrg1+STC1+2023_1+type@vertical+block@7f47fe2dbcaf47c5a071671c741fe1ab', displayName: 'Unit 1.1.2', category: 'vertical', diff --git a/src/content-tags-drawer/__mocks__/contentTaxonomyTagsCountMock.js b/src/content-tags-drawer/__mocks__/contentTaxonomyTagsCountMock.ts similarity index 84% rename from src/content-tags-drawer/__mocks__/contentTaxonomyTagsCountMock.js rename to src/content-tags-drawer/__mocks__/contentTaxonomyTagsCountMock.ts index 3ce4d2050..c466d33fc 100644 --- a/src/content-tags-drawer/__mocks__/contentTaxonomyTagsCountMock.js +++ b/src/content-tags-drawer/__mocks__/contentTaxonomyTagsCountMock.ts @@ -1,3 +1,3 @@ -module.exports = { +export default { 'block-v1:SampleTaxonomyOrg1+STC1+2023_1+type@vertical+block@aaf8b8eb86b54281aeeab12499d2cb0b': 20, }; diff --git a/src/content-tags-drawer/__mocks__/contentTaxonomyTagsMock.js b/src/content-tags-drawer/__mocks__/contentTaxonomyTagsMock.ts similarity index 98% rename from src/content-tags-drawer/__mocks__/contentTaxonomyTagsMock.js rename to src/content-tags-drawer/__mocks__/contentTaxonomyTagsMock.ts index fd8214f5c..76a4c6dcc 100644 --- a/src/content-tags-drawer/__mocks__/contentTaxonomyTagsMock.js +++ b/src/content-tags-drawer/__mocks__/contentTaxonomyTagsMock.ts @@ -1,4 +1,4 @@ -module.exports = { +export default { 'block-v1:SampleTaxonomyOrg1+STC1+2023_1+type@vertical+block@aaf8b8eb86b54281aeeab12499d2cb0b': { taxonomies: [ { diff --git a/src/content-tags-drawer/__mocks__/contentTaxonomyTagsTreeMock.js b/src/content-tags-drawer/__mocks__/contentTaxonomyTagsTreeMock.ts similarity index 98% rename from src/content-tags-drawer/__mocks__/contentTaxonomyTagsTreeMock.js rename to src/content-tags-drawer/__mocks__/contentTaxonomyTagsTreeMock.ts index 6d7fc48bb..5d0100d88 100644 --- a/src/content-tags-drawer/__mocks__/contentTaxonomyTagsTreeMock.js +++ b/src/content-tags-drawer/__mocks__/contentTaxonomyTagsTreeMock.ts @@ -1,4 +1,4 @@ -module.exports = { +export default { 'hierarchical taxonomy tag 1': { explicit: false, canDeleteObjecttag: true, diff --git a/src/content-tags-drawer/__mocks__/index.js b/src/content-tags-drawer/__mocks__/index.ts similarity index 100% rename from src/content-tags-drawer/__mocks__/index.js rename to src/content-tags-drawer/__mocks__/index.ts diff --git a/src/content-tags-drawer/__mocks__/taxonomyTagsMock.js b/src/content-tags-drawer/__mocks__/taxonomyTagsMock.ts similarity index 98% rename from src/content-tags-drawer/__mocks__/taxonomyTagsMock.js rename to src/content-tags-drawer/__mocks__/taxonomyTagsMock.ts index 0b2bc714c..9316c19ef 100644 --- a/src/content-tags-drawer/__mocks__/taxonomyTagsMock.js +++ b/src/content-tags-drawer/__mocks__/taxonomyTagsMock.ts @@ -1,4 +1,4 @@ -module.exports = { +export default { next: null, previous: null, count: 4, diff --git a/src/content-tags-drawer/__mocks__/updateContentTaxonomyTagsMock.js b/src/content-tags-drawer/__mocks__/updateContentTaxonomyTagsMock.ts similarity index 96% rename from src/content-tags-drawer/__mocks__/updateContentTaxonomyTagsMock.js rename to src/content-tags-drawer/__mocks__/updateContentTaxonomyTagsMock.ts index 0fb6ffc6f..7a0b11524 100644 --- a/src/content-tags-drawer/__mocks__/updateContentTaxonomyTagsMock.js +++ b/src/content-tags-drawer/__mocks__/updateContentTaxonomyTagsMock.ts @@ -1,4 +1,4 @@ -module.exports = { +export default { 'block-v1:SampleTaxonomyOrg1+STC1+2023_1+type@vertical+block@aaf8b8eb86b54281aeeab12499d2cb0b': { taxonomies: [ { diff --git a/src/course-checklist/ChecklistSection/index.js b/src/course-checklist/ChecklistSection/index.ts similarity index 100% rename from src/course-checklist/ChecklistSection/index.js rename to src/course-checklist/ChecklistSection/index.ts diff --git a/src/course-checklist/index.js b/src/course-checklist/index.ts similarity index 100% rename from src/course-checklist/index.js rename to src/course-checklist/index.ts diff --git a/src/course-outline/CourseOutline.test.tsx b/src/course-outline/CourseOutline.test.tsx index a576c4e4a..26a1ef52a 100644 --- a/src/course-outline/CourseOutline.test.tsx +++ b/src/course-outline/CourseOutline.test.tsx @@ -1573,7 +1573,7 @@ describe('', () => { // after configuraiton response unit.visibilityState = 'staff_only'; - unit.discussion_enabled = false; + unit.discussionEnabled = false; unit.userPartitionInfo = { selectablePartitions: [ { diff --git a/src/course-outline/__mocks__/courseBestPractices.js b/src/course-outline/__mocks__/courseBestPractices.ts similarity index 97% rename from src/course-outline/__mocks__/courseBestPractices.js rename to src/course-outline/__mocks__/courseBestPractices.ts index 494c54d85..ea85714e3 100644 --- a/src/course-outline/__mocks__/courseBestPractices.js +++ b/src/course-outline/__mocks__/courseBestPractices.ts @@ -1,4 +1,4 @@ -module.exports = { +export default { isSelfPaced: false, sections: { totalNumber: 6, diff --git a/src/course-outline/__mocks__/courseLaunch.js b/src/course-outline/__mocks__/courseLaunch.ts similarity index 97% rename from src/course-outline/__mocks__/courseLaunch.js rename to src/course-outline/__mocks__/courseLaunch.ts index 40b629f46..94d431918 100644 --- a/src/course-outline/__mocks__/courseLaunch.js +++ b/src/course-outline/__mocks__/courseLaunch.ts @@ -1,4 +1,4 @@ -module.exports = { +export default { isSelfPaced: false, dates: { hasStartDate: true, diff --git a/src/course-outline/__mocks__/courseOutlineIndex.js b/src/course-outline/__mocks__/courseOutlineIndex.ts similarity index 99% rename from src/course-outline/__mocks__/courseOutlineIndex.js rename to src/course-outline/__mocks__/courseOutlineIndex.ts index ae225b9a7..86c15975b 100644 --- a/src/course-outline/__mocks__/courseOutlineIndex.js +++ b/src/course-outline/__mocks__/courseOutlineIndex.ts @@ -1,4 +1,4 @@ -module.exports = { +export default { courseReleaseDate: 'Set Date', courseStructure: { id: 'block-v1:edX+DemoX+Demo_Course+type@course+block@course', diff --git a/src/course-outline/__mocks__/courseOutlineIndexWithoutSections.js b/src/course-outline/__mocks__/courseOutlineIndexWithoutSections.ts similarity index 97% rename from src/course-outline/__mocks__/courseOutlineIndexWithoutSections.js rename to src/course-outline/__mocks__/courseOutlineIndexWithoutSections.ts index ac61c475c..252f3d567 100644 --- a/src/course-outline/__mocks__/courseOutlineIndexWithoutSections.js +++ b/src/course-outline/__mocks__/courseOutlineIndexWithoutSections.ts @@ -1,4 +1,4 @@ -module.exports = { +export default { courseReleaseDate: 'Set Date', courseStructure: {}, deprecatedBlocksInfo: { diff --git a/src/course-outline/__mocks__/courseSection.js b/src/course-outline/__mocks__/courseSection.ts similarity index 99% rename from src/course-outline/__mocks__/courseSection.js rename to src/course-outline/__mocks__/courseSection.ts index 959717f24..05ed294d8 100644 --- a/src/course-outline/__mocks__/courseSection.js +++ b/src/course-outline/__mocks__/courseSection.ts @@ -1,4 +1,4 @@ -module.exports = { +export default { id: 'block-v1:edX+DemoX+Demo_Course+type@chapter+block@d0e78d363a424da6be5c22704c34f7a7', display_name: 'Section', category: 'chapter', diff --git a/src/course-outline/__mocks__/courseSubsection.js b/src/course-outline/__mocks__/courseSubsection.ts similarity index 99% rename from src/course-outline/__mocks__/courseSubsection.js rename to src/course-outline/__mocks__/courseSubsection.ts index a7e72d0ef..2eedfadfc 100644 --- a/src/course-outline/__mocks__/courseSubsection.js +++ b/src/course-outline/__mocks__/courseSubsection.ts @@ -1,4 +1,4 @@ -module.exports = { +export default { id: 'block-v1:edX+DemoX+Demo_Course+type@sequential+block@b713bc2830f34f6f87554028c3068729', display_name: 'Subsection', category: 'sequential', diff --git a/src/course-outline/__mocks__/index.js b/src/course-outline/__mocks__/index.ts similarity index 100% rename from src/course-outline/__mocks__/index.js rename to src/course-outline/__mocks__/index.ts diff --git a/src/course-outline/constants.js b/src/course-outline/constants.ts similarity index 78% rename from src/course-outline/constants.js rename to src/course-outline/constants.ts index 74cc51dad..bc0d65449 100644 --- a/src/course-outline/constants.js +++ b/src/course-outline/constants.ts @@ -1,4 +1,4 @@ -export const ITEM_BADGE_STATUS = /** @type {const} */ ({ +export const ITEM_BADGE_STATUS = { live: 'live', gated: 'gated', publishedNotLive: 'published_not_live', @@ -7,23 +7,23 @@ export const ITEM_BADGE_STATUS = /** @type {const} */ ({ draft: 'draft', unscheduled: 'unscheduled', needs_attention: 'needs_attention', -}); +} as const; export const HIGHLIGHTS_FIELD_MAX_LENGTH = 250; -export const CHECKLIST_FILTERS = /** @type {const} */ ({ +export const CHECKLIST_FILTERS = { ALL: 'ALL', SELF_PACED: 'SELF_PACED', INSTRUCTOR_PACED: 'INSTRUCTOR_PACED', -}); +} as const; -export const COURSE_BLOCK_NAMES = /** @type {const} */ ({ +export const COURSE_BLOCK_NAMES = { chapter: { id: 'chapter', name: 'Section' }, sequential: { id: 'sequential', name: 'Subsection' }, vertical: { id: 'vertical', name: 'Unit' }, -}); +} as const; -export const LAUNCH_CHECKLIST = /** @type {const} */ ({ +export const LAUNCH_CHECKLIST = { data: [ { id: 'welcomeMessage', @@ -50,9 +50,9 @@ export const LAUNCH_CHECKLIST = /** @type {const} */ ({ pacingTypeFilter: CHECKLIST_FILTERS.ALL, }, ], -}); +} as const; -export const BEST_PRACTICES_CHECKLIST = /** @type {const} */ ({ +export const BEST_PRACTICES_CHECKLIST = { data: [ { id: 'videoDuration', @@ -71,17 +71,17 @@ export const BEST_PRACTICES_CHECKLIST = /** @type {const} */ ({ pacingTypeFilter: CHECKLIST_FILTERS.ALL, }, ], -}); +} as const; -export const VIDEO_SHARING_OPTIONS = /** @type {const} */ ({ +export const VIDEO_SHARING_OPTIONS = { perVideo: 'per-video', allOn: 'all-on', allOff: 'all-off', -}); +} as const; -export const API_ERROR_TYPES = /** @type {const} */ ({ +export const API_ERROR_TYPES = { networkError: 'networkError', serverError: 'serverError', unknown: 'unknown', forbidden: 'forbidden', -}); +} as const; diff --git a/src/course-team/__mocks__/index.js b/src/course-team/__mocks__/index.ts similarity index 100% rename from src/course-team/__mocks__/index.js rename to src/course-team/__mocks__/index.ts diff --git a/src/course-team/constants.js b/src/course-team/constants.ts similarity index 89% rename from src/course-team/constants.js rename to src/course-team/constants.ts index f7d6a11d2..542ea5534 100644 --- a/src/course-team/constants.js +++ b/src/course-team/constants.ts @@ -2,16 +2,16 @@ export const MODAL_TYPES = { error: 'error', delete: 'delete', warning: 'warning', -}; +} as const; export const BADGE_STATES = { admin: 'primary-700', staff: 'gray-500', -}; +} as const; export const USER_ROLES = { admin: 'instructor', staff: 'staff', -}; +} as const; export const EXAMPLE_USER_EMAIL = 'username@domain.com'; diff --git a/src/course-unit/__mocks__/clipboardResponse.js b/src/course-unit/__mocks__/clipboardResponse.ts similarity index 100% rename from src/course-unit/__mocks__/clipboardResponse.js rename to src/course-unit/__mocks__/clipboardResponse.ts diff --git a/src/course-unit/__mocks__/courseCreateXblock.js b/src/course-unit/__mocks__/courseCreateXblock.ts similarity index 88% rename from src/course-unit/__mocks__/courseCreateXblock.js rename to src/course-unit/__mocks__/courseCreateXblock.ts index 7da6d4906..307f4ba96 100644 --- a/src/course-unit/__mocks__/courseCreateXblock.js +++ b/src/course-unit/__mocks__/courseCreateXblock.ts @@ -1,4 +1,4 @@ -module.exports = { +export default { locator: 'block-v1:edX+L153+3T2023+type@drag-and-drop-v2+block@dc52e3cf8e6145e39ba5c1ff4888db4b', courseKey: 'course-v1:edX+L153+3T2023', }; diff --git a/src/course-unit/__mocks__/courseOutlineInfo.js b/src/course-unit/__mocks__/courseOutlineInfo.ts similarity index 99% rename from src/course-unit/__mocks__/courseOutlineInfo.js rename to src/course-unit/__mocks__/courseOutlineInfo.ts index 5c7d55e6f..3c7ce5a56 100644 --- a/src/course-unit/__mocks__/courseOutlineInfo.js +++ b/src/course-unit/__mocks__/courseOutlineInfo.ts @@ -1,4 +1,4 @@ -module.exports = { +export default { id: 'block-v1:edX+DemoX+Demo_Course+type@course+block@course', display_name: 'Demonstration Course', category: 'course', diff --git a/src/course-unit/__mocks__/courseSectionVertical.js b/src/course-unit/__mocks__/courseSectionVertical.ts similarity index 99% rename from src/course-unit/__mocks__/courseSectionVertical.js rename to src/course-unit/__mocks__/courseSectionVertical.ts index fad49675f..f78a51dc5 100644 --- a/src/course-unit/__mocks__/courseSectionVertical.js +++ b/src/course-unit/__mocks__/courseSectionVertical.ts @@ -1,4 +1,4 @@ -module.exports = { +export default { language_code: 'en', action: 'view', xblock: { diff --git a/src/course-unit/__mocks__/courseUnit.js b/src/course-unit/__mocks__/courseUnit.ts similarity index 99% rename from src/course-unit/__mocks__/courseUnit.js rename to src/course-unit/__mocks__/courseUnit.ts index 07c2bf03b..26637b276 100644 --- a/src/course-unit/__mocks__/courseUnit.js +++ b/src/course-unit/__mocks__/courseUnit.ts @@ -1,4 +1,4 @@ -module.exports = { +export default { id: 'block-v1:edX+DemoX+Demo_Course+type@vertical+block@d91b9e5d8bc64d57a1332d06bf2f2144', display_name: 'Getting Started new', category: 'vertical', diff --git a/src/course-unit/__mocks__/courseVerticalChildren.js b/src/course-unit/__mocks__/courseVerticalChildren.ts similarity index 99% rename from src/course-unit/__mocks__/courseVerticalChildren.js rename to src/course-unit/__mocks__/courseVerticalChildren.ts index 32bd8272b..4c5395ab6 100644 --- a/src/course-unit/__mocks__/courseVerticalChildren.js +++ b/src/course-unit/__mocks__/courseVerticalChildren.ts @@ -1,4 +1,4 @@ -module.exports = { +export default { children: [ { name: 'Discussion', diff --git a/src/course-unit/__mocks__/index.js b/src/course-unit/__mocks__/index.ts similarity index 100% rename from src/course-unit/__mocks__/index.js rename to src/course-unit/__mocks__/index.ts diff --git a/src/course-unit/clipboard/index.js b/src/course-unit/clipboard/index.ts similarity index 100% rename from src/course-unit/clipboard/index.js rename to src/course-unit/clipboard/index.ts diff --git a/src/course-unit/clipboard/paste-notification/components/index.js b/src/course-unit/clipboard/paste-notification/components/index.ts similarity index 100% rename from src/course-unit/clipboard/paste-notification/components/index.js rename to src/course-unit/clipboard/paste-notification/components/index.ts diff --git a/src/course-unit/clipboard/paste-notification/constants.js b/src/course-unit/clipboard/paste-notification/constants.ts similarity index 100% rename from src/course-unit/clipboard/paste-notification/constants.js rename to src/course-unit/clipboard/paste-notification/constants.ts diff --git a/src/course-unit/constants.ts b/src/course-unit/constants.ts index 96d7d60f6..30fce6036 100644 --- a/src/course-unit/constants.ts +++ b/src/course-unit/constants.ts @@ -11,7 +11,7 @@ export const UNIT_VISIBILITY_STATES = { staffOnly: 'staff_only', live: 'live', ready: 'ready', -}; +} as const; export const ICON_COLOR_VARIANTS = { BLACK: '#000', @@ -25,7 +25,7 @@ export const PUBLISH_TYPES = { republish: 'republish', discardChanges: 'discard_changes', makePublic: 'make_public', -}; +} as const; export const getXBlockSupportMessages = (intl) => ({ fs: { // Fully supported diff --git a/src/course-unit/header-title/HeaderTitle.test.tsx b/src/course-unit/header-title/HeaderTitle.test.tsx index 3ec4852f0..6c15964e4 100644 --- a/src/course-unit/header-title/HeaderTitle.test.tsx +++ b/src/course-unit/header-title/HeaderTitle.test.tsx @@ -71,7 +71,7 @@ describe('', () => { xblock_info: { ...courseSectionVerticalMock.xblock_info, upstreamInfo: { - ...courseSectionVerticalMock.xblock_info.upstreamInfo, + // ...courseSectionVerticalMock.xblock_info.upstream_info, // seems to be missing in the mock upstreamRef: 'lct:org:lib:unit:unit-1', }, }, diff --git a/src/course-unit/index.js b/src/course-unit/index.ts similarity index 100% rename from src/course-unit/index.js rename to src/course-unit/index.ts diff --git a/src/course-unit/legacy-sidebar/components/index.js b/src/course-unit/legacy-sidebar/components/index.ts similarity index 100% rename from src/course-unit/legacy-sidebar/components/index.js rename to src/course-unit/legacy-sidebar/components/index.ts diff --git a/src/course-updates/__mocks__/index.js b/src/course-updates/__mocks__/index.ts similarity index 100% rename from src/course-updates/__mocks__/index.js rename to src/course-updates/__mocks__/index.ts diff --git a/src/course-updates/index.js b/src/course-updates/index.ts similarity index 100% rename from src/course-updates/index.js rename to src/course-updates/index.ts diff --git a/src/custom-pages/index.js b/src/custom-pages/index.ts similarity index 100% rename from src/custom-pages/index.js rename to src/custom-pages/index.ts diff --git a/src/editors/containers/VideoEditor/components/VideoSettingsModal/components/ThumbnailWidget/constants.js b/src/editors/containers/VideoEditor/components/VideoSettingsModal/components/ThumbnailWidget/constants.ts similarity index 100% rename from src/editors/containers/VideoEditor/components/VideoSettingsModal/components/ThumbnailWidget/constants.js rename to src/editors/containers/VideoEditor/components/VideoSettingsModal/components/ThumbnailWidget/constants.ts diff --git a/src/editors/data/constants/advancedOlxTemplates/index.js b/src/editors/data/constants/advancedOlxTemplates/index.ts similarity index 100% rename from src/editors/data/constants/advancedOlxTemplates/index.js rename to src/editors/data/constants/advancedOlxTemplates/index.ts diff --git a/src/editors/data/constants/basicProblemTemplates/index.js b/src/editors/data/constants/basicProblemTemplates/index.ts similarity index 100% rename from src/editors/data/constants/basicProblemTemplates/index.js rename to src/editors/data/constants/basicProblemTemplates/index.ts diff --git a/src/editors/data/redux/game/index.js b/src/editors/data/redux/game/index.ts similarity index 100% rename from src/editors/data/redux/game/index.js rename to src/editors/data/redux/game/index.ts diff --git a/src/editors/data/redux/requests/index.js b/src/editors/data/redux/requests/index.ts similarity index 100% rename from src/editors/data/redux/requests/index.js rename to src/editors/data/redux/requests/index.ts diff --git a/src/editors/data/redux/thunkActions/index.js b/src/editors/data/redux/thunkActions/index.ts similarity index 100% rename from src/editors/data/redux/thunkActions/index.js rename to src/editors/data/redux/thunkActions/index.ts diff --git a/src/editors/data/redux/video/index.js b/src/editors/data/redux/video/index.ts similarity index 100% rename from src/editors/data/redux/video/index.js rename to src/editors/data/redux/video/index.ts diff --git a/src/editors/sharedComponents/CodeEditor/constants.js b/src/editors/sharedComponents/CodeEditor/constants.ts similarity index 100% rename from src/editors/sharedComponents/CodeEditor/constants.js rename to src/editors/sharedComponents/CodeEditor/constants.ts diff --git a/src/export-page/__mocks__/index.js b/src/export-page/__mocks__/index.ts similarity index 100% rename from src/export-page/__mocks__/index.js rename to src/export-page/__mocks__/index.ts diff --git a/src/export-page/data/constants.js b/src/export-page/data/constants.ts similarity index 100% rename from src/export-page/data/constants.js rename to src/export-page/data/constants.ts diff --git a/src/files-and-videos/files-page/index.js b/src/files-and-videos/files-page/index.ts similarity index 100% rename from src/files-and-videos/files-page/index.js rename to src/files-and-videos/files-page/index.ts diff --git a/src/files-and-videos/generic/constants.js b/src/files-and-videos/generic/constants.ts similarity index 100% rename from src/files-and-videos/generic/constants.js rename to src/files-and-videos/generic/constants.ts diff --git a/src/files-and-videos/generic/index.js b/src/files-and-videos/generic/index.ts similarity index 100% rename from src/files-and-videos/generic/index.js rename to src/files-and-videos/generic/index.ts diff --git a/src/files-and-videos/generic/table-components/index.js b/src/files-and-videos/generic/table-components/index.ts similarity index 100% rename from src/files-and-videos/generic/table-components/index.js rename to src/files-and-videos/generic/table-components/index.ts diff --git a/src/files-and-videos/generic/table-components/sort-and-filter-modal/index.js b/src/files-and-videos/generic/table-components/sort-and-filter-modal/index.ts similarity index 100% rename from src/files-and-videos/generic/table-components/sort-and-filter-modal/index.js rename to src/files-and-videos/generic/table-components/sort-and-filter-modal/index.ts diff --git a/src/files-and-videos/generic/table-components/table-custom-columns/index.js b/src/files-and-videos/generic/table-components/table-custom-columns/index.ts similarity index 100% rename from src/files-and-videos/generic/table-components/table-custom-columns/index.js rename to src/files-and-videos/generic/table-components/table-custom-columns/index.ts diff --git a/src/files-and-videos/videos-page/data/constants.js b/src/files-and-videos/videos-page/data/constants.ts similarity index 100% rename from src/files-and-videos/videos-page/data/constants.js rename to src/files-and-videos/videos-page/data/constants.ts diff --git a/src/files-and-videos/videos-page/index.js b/src/files-and-videos/videos-page/index.ts similarity index 100% rename from src/files-and-videos/videos-page/index.js rename to src/files-and-videos/videos-page/index.ts diff --git a/src/files-and-videos/videos-page/info-sidebar/index.js b/src/files-and-videos/videos-page/info-sidebar/index.ts similarity index 100% rename from src/files-and-videos/videos-page/info-sidebar/index.js rename to src/files-and-videos/videos-page/info-sidebar/index.ts diff --git a/src/files-and-videos/videos-page/info-sidebar/transcript-item/index.js b/src/files-and-videos/videos-page/info-sidebar/transcript-item/index.ts similarity index 100% rename from src/files-and-videos/videos-page/info-sidebar/transcript-item/index.js rename to src/files-and-videos/videos-page/info-sidebar/transcript-item/index.ts diff --git a/src/files-and-videos/videos-page/transcript-settings/index.js b/src/files-and-videos/videos-page/transcript-settings/index.ts similarity index 100% rename from src/files-and-videos/videos-page/transcript-settings/index.js rename to src/files-and-videos/videos-page/transcript-settings/index.ts diff --git a/src/files-and-videos/videos-page/upload-modal/index.js b/src/files-and-videos/videos-page/upload-modal/index.ts similarity index 100% rename from src/files-and-videos/videos-page/upload-modal/index.js rename to src/files-and-videos/videos-page/upload-modal/index.ts diff --git a/src/generic/__mocks__/index.js b/src/generic/__mocks__/index.ts similarity index 100% rename from src/generic/__mocks__/index.js rename to src/generic/__mocks__/index.ts diff --git a/src/generic/clipboard/index.js b/src/generic/clipboard/index.ts similarity index 100% rename from src/generic/clipboard/index.js rename to src/generic/clipboard/index.ts diff --git a/src/generic/configure-modal/__mocks__/index.js b/src/generic/configure-modal/__mocks__/index.ts similarity index 100% rename from src/generic/configure-modal/__mocks__/index.js rename to src/generic/configure-modal/__mocks__/index.ts diff --git a/src/generic/create-or-rerun-course/index.js b/src/generic/create-or-rerun-course/index.ts similarity index 100% rename from src/generic/create-or-rerun-course/index.js rename to src/generic/create-or-rerun-course/index.ts diff --git a/src/generic/datepicker-control/index.js b/src/generic/datepicker-control/index.ts similarity index 100% rename from src/generic/datepicker-control/index.js rename to src/generic/datepicker-control/index.ts diff --git a/src/generic/help-sidebar/index.js b/src/generic/help-sidebar/index.ts similarity index 100% rename from src/generic/help-sidebar/index.js rename to src/generic/help-sidebar/index.ts diff --git a/src/generic/model-store/index.js b/src/generic/model-store/index.ts similarity index 100% rename from src/generic/model-store/index.js rename to src/generic/model-store/index.ts diff --git a/src/generic/saving-error-alert/index.js b/src/generic/saving-error-alert/index.ts similarity index 100% rename from src/generic/saving-error-alert/index.js rename to src/generic/saving-error-alert/index.ts diff --git a/src/grading-settings/index.js b/src/grading-settings/index.ts similarity index 100% rename from src/grading-settings/index.js rename to src/grading-settings/index.ts diff --git a/src/group-configurations/__mocks__/index.js b/src/group-configurations/__mocks__/index.ts similarity index 100% rename from src/group-configurations/__mocks__/index.js rename to src/group-configurations/__mocks__/index.ts diff --git a/src/group-configurations/common/index.js b/src/group-configurations/common/index.ts similarity index 100% rename from src/group-configurations/common/index.js rename to src/group-configurations/common/index.ts diff --git a/src/group-configurations/constants.js b/src/group-configurations/constants.ts similarity index 100% rename from src/group-configurations/constants.js rename to src/group-configurations/constants.ts diff --git a/src/group-configurations/experiment-configurations-section/constants.js b/src/group-configurations/experiment-configurations-section/constants.ts similarity index 100% rename from src/group-configurations/experiment-configurations-section/constants.js rename to src/group-configurations/experiment-configurations-section/constants.ts diff --git a/src/help-urls/__mocks__/index.js b/src/help-urls/__mocks__/index.ts similarity index 100% rename from src/help-urls/__mocks__/index.js rename to src/help-urls/__mocks__/index.ts diff --git a/src/i18n/index.js b/src/i18n/index.ts similarity index 100% rename from src/i18n/index.js rename to src/i18n/index.ts diff --git a/src/import-page/data/constants.js b/src/import-page/data/constants.ts similarity index 100% rename from src/import-page/data/constants.js rename to src/import-page/data/constants.ts diff --git a/src/optimizer-page/scan-results/index.js b/src/optimizer-page/scan-results/index.ts similarity index 100% rename from src/optimizer-page/scan-results/index.js rename to src/optimizer-page/scan-results/index.ts diff --git a/src/pages-and-resources/discussions/app-config-form/apps/lti/index.js b/src/pages-and-resources/discussions/app-config-form/apps/lti/index.ts similarity index 100% rename from src/pages-and-resources/discussions/app-config-form/apps/lti/index.js rename to src/pages-and-resources/discussions/app-config-form/apps/lti/index.ts diff --git a/src/pages-and-resources/discussions/app-config-form/apps/openedx/index.js b/src/pages-and-resources/discussions/app-config-form/apps/openedx/index.ts similarity index 100% rename from src/pages-and-resources/discussions/app-config-form/apps/openedx/index.js rename to src/pages-and-resources/discussions/app-config-form/apps/openedx/index.ts diff --git a/src/pages-and-resources/discussions/app-config-form/index.js b/src/pages-and-resources/discussions/app-config-form/index.ts similarity index 100% rename from src/pages-and-resources/discussions/app-config-form/index.js rename to src/pages-and-resources/discussions/app-config-form/index.ts diff --git a/src/pages-and-resources/discussions/app-list/index.js b/src/pages-and-resources/discussions/app-list/index.ts similarity index 100% rename from src/pages-and-resources/discussions/app-list/index.js rename to src/pages-and-resources/discussions/app-list/index.ts diff --git a/src/pages-and-resources/discussions/data/constants.js b/src/pages-and-resources/discussions/data/constants.ts similarity index 100% rename from src/pages-and-resources/discussions/data/constants.js rename to src/pages-and-resources/discussions/data/constants.ts diff --git a/src/pages-and-resources/discussions/index.js b/src/pages-and-resources/discussions/index.ts similarity index 100% rename from src/pages-and-resources/discussions/index.js rename to src/pages-and-resources/discussions/index.ts diff --git a/src/pages-and-resources/index.js b/src/pages-and-resources/index.ts similarity index 100% rename from src/pages-and-resources/index.js rename to src/pages-and-resources/index.ts diff --git a/src/schedule-and-details/__mocks__/index.js b/src/schedule-and-details/__mocks__/index.ts similarity index 100% rename from src/schedule-and-details/__mocks__/index.js rename to src/schedule-and-details/__mocks__/index.ts diff --git a/src/schedule-and-details/basic-section/constants.js b/src/schedule-and-details/basic-section/constants.ts similarity index 100% rename from src/schedule-and-details/basic-section/constants.js rename to src/schedule-and-details/basic-section/constants.ts diff --git a/src/schedule-and-details/constants.js b/src/schedule-and-details/constants.ts similarity index 100% rename from src/schedule-and-details/constants.js rename to src/schedule-and-details/constants.ts diff --git a/src/schedule-and-details/license-section/constants.js b/src/schedule-and-details/license-section/constants.ts similarity index 100% rename from src/schedule-and-details/license-section/constants.js rename to src/schedule-and-details/license-section/constants.ts diff --git a/src/schedule-and-details/schedule-section/certificate-display-row/index.js b/src/schedule-and-details/schedule-section/certificate-display-row/index.ts similarity index 100% rename from src/schedule-and-details/schedule-section/certificate-display-row/index.js rename to src/schedule-and-details/schedule-section/certificate-display-row/index.ts diff --git a/src/schedule-and-details/schedule-section/schedule-row/index.js b/src/schedule-and-details/schedule-section/schedule-row/index.ts similarity index 100% rename from src/schedule-and-details/schedule-section/schedule-row/index.js rename to src/schedule-and-details/schedule-section/schedule-row/index.ts diff --git a/src/store.ts b/src/store.ts index 930c602cf..8eb87ce75 100644 --- a/src/store.ts +++ b/src/store.ts @@ -4,6 +4,9 @@ import { configureStore, Reducer } from '@reduxjs/toolkit'; // If this app + the plugin were using React-query, there'd be no issues. import { reducer as liveReducer } from '@openedx-plugins/course-app-live/data/slice'; +import { RequestStatusType } from '@src/data/constants'; +import { MODE_STATES } from './certificates/data/constants'; + import { reducer as modelsReducer } from './generic/model-store'; import { reducer as discussionsReducer } from './pages-and-resources/discussions/data/slice'; import { reducer as pagesAndResourcesReducer } from './pages-and-resources/data/slice'; @@ -54,7 +57,14 @@ export interface DeprecatedReduxState { courseOutline: Record; courseUnit: Record; courseChecklist: Record; - certificates: Record; + certificates: { + loadingStatus: RequestStatusType; + savingStatus: any; + savingImageStatus: string; + errorMessage: string; + componentMode: (typeof MODE_STATES)[keyof typeof MODE_STATES]; + certificatesData: any; + }; groupConfigurations: InferState; textbooks: Record; } diff --git a/src/taxonomy/__mocks__/index.js b/src/taxonomy/__mocks__/index.ts similarity index 100% rename from src/taxonomy/__mocks__/index.js rename to src/taxonomy/__mocks__/index.ts diff --git a/src/taxonomy/import-tags/__mocks__/index.js b/src/taxonomy/import-tags/__mocks__/index.js deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/taxonomy/import-tags/__mocks__/tagImportMock.js b/src/taxonomy/import-tags/__mocks__/tagImportMock.js deleted file mode 100644 index 9db45b4a5..000000000 --- a/src/taxonomy/import-tags/__mocks__/tagImportMock.js +++ /dev/null @@ -1,4 +0,0 @@ -export default { - name: 'Taxonomy name', - description: 'Taxonomy description', -}; diff --git a/src/textbooks/__mocks__/index.js b/src/textbooks/__mocks__/index.ts similarity index 100% rename from src/textbooks/__mocks__/index.js rename to src/textbooks/__mocks__/index.ts diff --git a/src/textbooks/index.js b/src/textbooks/index.ts similarity index 100% rename from src/textbooks/index.js rename to src/textbooks/index.ts