Resume from last completed unit (#66)

This commit is contained in:
Dave St.Germain
2020-05-14 11:17:35 -04:00
committed by GitHub
parent 6c7af3817b
commit 2b27f0774d
3 changed files with 17 additions and 2 deletions

View File

@@ -7,6 +7,7 @@ import { useRouteMatch, Redirect } from 'react-router';
import {
fetchCourse,
fetchSequence,
getResumeBlock,
} from '../data';
import {
checkBlockCompletion,
@@ -100,8 +101,14 @@ 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}`);
getResumeBlock(courseId).then((data) => {
// This is a replace because we don't want this change saved in the browser's history.
if (data.sectionId && data.unitId) {
history.replace(`/course/${courseId}/${data.sectionId}/${data.unitId}`);
} else {
history.replace(`/course/${courseId}/${firstSequenceId}`);
}
});
}
}, [courseStatus, sequenceId]);

View File

@@ -121,6 +121,7 @@ export async function getCourseBlocks(courseId) {
return normalizeBlocks(courseId, data.blocks);
}
function normalizeSequenceMetadata(sequence) {
return {
sequence: {
@@ -152,3 +153,9 @@ export async function getSequenceMetadata(sequenceId) {
return normalizeSequenceMetadata(data);
}
export async function getResumeBlock(courseId) {
const url = new URL(`${getConfig().LMS_BASE_URL}/api/courseware/resume/${courseId}`);
const { data } = await getAuthenticatedHttpClient().get(url.href, {});
return camelCaseObject(data);
}

View File

@@ -3,4 +3,5 @@ export {
fetchSequence,
} from './thunks';
export { getResumeBlock } from './api';
export { reducer } from './slice';