diff --git a/src/course-home/data/api.js b/src/course-home/data/api.js index 8bdedb90..a9fc76b1 100644 --- a/src/course-home/data/api.js +++ b/src/course-home/data/api.js @@ -141,7 +141,7 @@ export async function getOutlineTabData(courseId) { const { data, } = tabData; - const courseBlocks = normalizeOutlineBlocks(courseId, data.course_blocks.blocks); + const courseBlocks = data.course_blocks ? normalizeOutlineBlocks(courseId, data.course_blocks.blocks) : {}; const courseGoals = camelCaseObject(data.course_goals); const courseExpiredHtml = data.course_expired_html; const courseTools = camelCaseObject(data.course_tools); diff --git a/src/course-home/outline-tab/OutlineTab.jsx b/src/course-home/outline-tab/OutlineTab.jsx index 08978ea3..affa5036 100644 --- a/src/course-home/outline-tab/OutlineTab.jsx +++ b/src/course-home/outline-tab/OutlineTab.jsx @@ -70,8 +70,7 @@ function OutlineTab({ intl }) { const courseEndAlert = useCourseEndAlert(courseId); const certificateAvailableAlert = useCertificateAvailableAlert(courseId); - const rootCourseId = Object.keys(courses)[0]; - const { sectionIds } = courses[rootCourseId]; + const rootCourseId = courses && Object.keys(courses)[0]; return ( <> @@ -125,22 +124,26 @@ function OutlineTab({ intl }) { ...offerAlert, }} /> -
-
- -
-
- {sectionIds.map((sectionId) => ( -
- ))} + {rootCourseId && ( + <> +
+
+ +
+
+ {courses[rootCourseId].sectionIds.map((sectionId) => ( +
+ ))} + + )}
{courseGoalToDisplay && goalOptions.length > 0 && ( diff --git a/src/course-home/outline-tab/widgets/CourseTools.jsx b/src/course-home/outline-tab/widgets/CourseTools.jsx index 5a9fc8c0..66ea020c 100644 --- a/src/course-home/outline-tab/widgets/CourseTools.jsx +++ b/src/course-home/outline-tab/widgets/CourseTools.jsx @@ -18,6 +18,10 @@ function CourseTools({ courseId, intl }) { courseTools, } = useModel('outline', courseId); + if (courseTools.length === 0) { + return null; + } + const logClick = (analyticsId) => { const { administrator } = getAuthenticatedUser(); sendTrackEvent('edx.course.tool.accessed', {