From 5c1df3e16ed32d277625eb435c57db3270a6b4be Mon Sep 17 00:00:00 2001 From: Navin Karkera Date: Thu, 9 May 2024 11:18:00 +0530 Subject: [PATCH] feat: better api error handling (#972) Improve API error handling. --- src/course-outline/CourseOutline.jsx | 262 +++++++++--------- src/course-outline/CourseOutline.test.jsx | 86 +++++- src/course-outline/constants.js | 6 + src/course-outline/data/selectors.js | 1 + src/course-outline/data/slice.js | 22 ++ src/course-outline/data/thunk.js | 41 ++- .../header-navigations/HeaderNavigations.jsx | 24 ++ .../HeaderNavigations.test.jsx | 9 + src/course-outline/hooks.jsx | 14 +- src/course-outline/messages.js | 4 - src/course-outline/page-alerts/PageAlerts.jsx | 90 +++++- .../page-alerts/PageAlerts.test.jsx | 16 ++ src/course-outline/page-alerts/messages.js | 10 + 13 files changed, 415 insertions(+), 170 deletions(-) diff --git a/src/course-outline/CourseOutline.jsx b/src/course-outline/CourseOutline.jsx index 0ebbdf349..04838b766 100644 --- a/src/course-outline/CourseOutline.jsx +++ b/src/course-outline/CourseOutline.jsx @@ -13,7 +13,6 @@ import { Helmet } from 'react-helmet'; import { Add as IconAdd, CheckCircle as CheckCircleIcon, - Warning as WarningIcon, } from '@openedx/paragon/icons'; import { useSelector } from 'react-redux'; import { @@ -66,7 +65,6 @@ const CourseOutline = ({ courseId }) => { isCustomRelativeDatesActive, isLoading, isReIndexShow, - showErrorAlert, showSuccessAlert, isSectionsExpanded, isEnableHighlightsModalOpen, @@ -116,6 +114,7 @@ const CourseOutline = ({ courseId }) => { handleSectionDragAndDrop, handleSubsectionDragAndDrop, handleUnitDragAndDrop, + errors, } = useCourseOutline({ courseId }); const [sections, setSections] = useState(sectionsList); @@ -231,6 +230,7 @@ const CourseOutline = ({ courseId }) => { mfeProctoredExamSettingsUrl={mfeProctoredExamSettingsUrl} advanceSettingsUrl={advanceSettingsUrl} savingStatus={savingStatus} + errors={errors} /> {showSuccessAlert ? ( @@ -258,6 +258,7 @@ const CourseOutline = ({ courseId }) => { isDisabledReindexButton={isDisabledReindexButton} hasSections={Boolean(sectionsList.length)} courseActions={courseActions} + errors={errors} /> )} /> @@ -279,132 +280,134 @@ const CourseOutline = ({ courseId }) => { openEnableHighlightsModal={openEnableHighlightsModal} handleVideoSharingOptionChange={handleVideoSharingOptionChange} /> -
- {sections.length ? ( - <> - - + {sections.length ? ( + <> + - {sections.map((section, sectionIndex) => ( - - + {sections.map((section, sectionIndex) => ( + - {section.childInfo.children.map((subsection, subsectionIndex) => ( - - + {section.childInfo.children.map((subsection, subsectionIndex) => ( + - {subsection.childInfo.children.map((unit, unitIndex) => ( - - ))} - - - ))} - - - ))} - - - {courseActions.childAddable && ( - - )} - - ) : ( - - )} -
+ + {subsection.childInfo.children.map((unit, unitIndex) => ( + + ))} + + + ))} + + + ))} + + + {courseActions.childAddable && ( + + )} + + ) : ( + + )} + + )} @@ -453,17 +456,6 @@ const CourseOutline = ({ courseId }) => { isQueryPending={savingStatus === RequestStatus.PENDING} onInternetConnectionFailed={handleInternetConnectionFailed} /> - {showErrorAlert && ( -