From a923f3d8e7d53d394b21311e26e71fef7dbd2dbe Mon Sep 17 00:00:00 2001 From: David Joy Date: Tue, 24 Mar 2020 11:09:45 -0400 Subject: [PATCH] fix: use history.push to preserve history for user navigation (#35) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We continue to use history.replace for building the MFE URL, which we don’t want saved in history. --- src/courseware/CoursewareContainer.jsx | 8 +++++--- .../course/sequence/content-lock/ContentLock.jsx | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/courseware/CoursewareContainer.jsx b/src/courseware/CoursewareContainer.jsx index bec5c605..8c1d1097 100644 --- a/src/courseware/CoursewareContainer.jsx +++ b/src/courseware/CoursewareContainer.jsx @@ -22,7 +22,7 @@ function useUnitNavigationHandler(courseId, sequenceId, unitId) { const dispatch = useDispatch(); return useCallback((nextUnitId) => { dispatch(checkBlockCompletion(courseId, sequenceId, unitId)); - history.replace(`/course/${courseId}/${sequenceId}/${nextUnitId}`); + history.push(`/course/${courseId}/${sequenceId}/${nextUnitId}`); }, [courseId, sequenceId]); } @@ -56,7 +56,7 @@ function useNextSequenceHandler(courseId, sequenceId) { return useCallback(() => { if (nextSequence !== null) { const nextUnitId = nextSequence.unitIds[0]; - history.replace(`/course/${courseId}/${nextSequence.id}/${nextUnitId}`); + history.push(`/course/${courseId}/${nextSequence.id}/${nextUnitId}`); } }, [courseStatus, sequenceStatus, sequenceId]); } @@ -68,7 +68,7 @@ function usePreviousSequenceHandler(courseId, sequenceId) { return useCallback(() => { if (previousSequence !== null) { const previousUnitId = previousSequence.unitIds[previousSequence.unitIds.length - 1]; - history.replace(`/course/${courseId}/${previousSequence.id}/${previousUnitId}`); + history.push(`/course/${courseId}/${previousSequence.id}/${previousUnitId}`); } }, [courseStatus, sequenceStatus, sequenceId]); } @@ -90,6 +90,7 @@ function useContentRedirect(courseStatus, sequenceStatus) { const firstSequenceId = useSelector(firstSequenceIdSelector); useEffect(() => { if (courseStatus === 'loaded' && !sequenceId) { + // This is a replace because we don't want this change saved in the browser's history. history.replace(`/course/${courseId}/${firstSequenceId}`); } }, [courseStatus, sequenceId]); @@ -100,6 +101,7 @@ function useContentRedirect(courseStatus, sequenceStatus) { if (sequence.unitIds !== undefined && sequence.unitIds.length > 0) { const unitIndex = sequence.position || 0; const nextUnitId = sequence.unitIds[unitIndex]; + // This is a replace because we don't want this change saved in the browser's history. history.replace(`/course/${courseId}/${sequence.id}/${nextUnitId}`); } } diff --git a/src/courseware/course/sequence/content-lock/ContentLock.jsx b/src/courseware/course/sequence/content-lock/ContentLock.jsx index 09f58c32..5e1a09f6 100644 --- a/src/courseware/course/sequence/content-lock/ContentLock.jsx +++ b/src/courseware/course/sequence/content-lock/ContentLock.jsx @@ -12,7 +12,7 @@ function ContentLock({ intl, courseId, prereqSectionName, prereqId, sequenceTitle, }) { const handleClick = useCallback(() => { - history.replace(`/course/${courseId}/${prereqId}`); + history.push(`/course/${courseId}/${prereqId}`); }); return (