Skip to content

Commit 1f42ded

Browse files
committed
Added validate resume code saga
1 parent 736e624 commit 1f42ded

File tree

5 files changed

+50
-4
lines changed

5 files changed

+50
-4
lines changed

src/commons/application/actions/SessionActions.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,8 @@ const SessionActions = createActions('session', {
149149
deleteUserCourseRegistration: (courseRegId: number) => ({ courseRegId }),
150150
updateCourseResearchAgreement: (agreedToResearch: boolean) => ({ agreedToResearch }),
151151
updateStoriesUserRole: (userId: number, role: StoriesRole) => ({ userId, role }),
152-
deleteStoriesUserUserGroups: (userId: number) => ({ userId })
152+
deleteStoriesUserUserGroups: (userId: number) => ({ userId }),
153+
validateResumeCode: (resumeCode: string) => ({ resumeCode })
153154
});
154155

155156
// For compatibility with existing code (actions helper)

src/commons/sagas/BackendSaga.ts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,8 @@ import {
9999
unpublishGrading,
100100
unpublishGradingAll,
101101
updateAssessment,
102-
uploadAssessment
102+
uploadAssessment,
103+
validateResumeCode
103104
} from './RequestsSaga';
104105
import { safeTakeEvery as takeEvery } from './SafeEffects';
105106

@@ -601,7 +602,16 @@ const newBackendSagaOne = combineSagaHandlers(sagaActions, {
601602
yield put(actions.updateGradingOverviews({ count: totalPossibleEntries, data: newOverviews }));
602603
},
603604
submitGrading: sendGrade,
604-
submitGradingAndContinue: sendGradeAndContinue
605+
submitGradingAndContinue: sendGradeAndContinue,
606+
validateResumeCode: function* (action) {
607+
const tokens: Tokens = yield selectTokens();
608+
const { resumeCode } = action.payload;
609+
610+
// TODO: Implement
611+
console.log('Validating code ', resumeCode);
612+
const resumeCodeIsValid = yield call(validateResumeCode, tokens, resumeCode);
613+
console.log('Resume code is valid ', resumeCodeIsValid);
614+
}
605615
});
606616

607617
function* sendGrade(

src/commons/sagas/RequestsSaga.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1396,6 +1396,24 @@ export const removeUserCourseRegistration = async (
13961396
return resp;
13971397
};
13981398

1399+
/**
1400+
* POST /courses/{course_Id}/resume_code
1401+
*/
1402+
export const validateResumeCode = async (
1403+
tokens: Tokens,
1404+
resumeCode: string
1405+
): Promise<Boolean> => {
1406+
const resp = await request(`${courseId()}/resume_code`, 'POST', {
1407+
...tokens,
1408+
body: {
1409+
'resume_code': resumeCode,
1410+
}
1411+
});
1412+
1413+
console.log('Response ', resp);
1414+
return resp != null && resp.ok;
1415+
};
1416+
13991417
/**
14001418
* GET /devices
14011419
*/

src/pages/academy/adminPanel/AdminPanel.tsx

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,19 @@ const AdminPanel: React.FC = () => {
6969
moduleHelpText: session.moduleHelpText,
7070
isOfficialCourse: session.isOfficialCourse
7171
});
72-
}, [session.courseName, session.courseShortName, session.enableAchievements, session.enableGame, session.enableSourcecast, session.enableStories, session.enableExamMode, session.moduleHelpText, session.isOfficialCourse, session.viewable, session.resumeCode]);
72+
}, [
73+
session.courseName,
74+
session.courseShortName,
75+
session.enableAchievements,
76+
session.enableGame,
77+
session.enableSourcecast,
78+
session.enableStories,
79+
session.enableExamMode,
80+
session.moduleHelpText,
81+
session.isOfficialCourse,
82+
session.viewable,
83+
session.resumeCode
84+
]);
7385

7486
const tableRef = useRef<ImperativeAssessmentConfigPanel>(null);
7587
useEffect(() => {
@@ -96,6 +108,9 @@ const AdminPanel: React.FC = () => {
96108
// Handler to submit changes to Course Configration and Assessment Configuration to the backend.
97109
// Changes made to users are handled separately.
98110
const submitHandler = useCallback(() => {
111+
// TODO: Implement
112+
dispatch(SessionActions.validateResumeCode('123456789'));
113+
99114
if (hasChangesCourseConfig) {
100115
dispatch(SessionActions.updateCourseConfig(courseConfiguration));
101116
setHasChangesCourseConfig(false);

src/pages/academy/adminPanel/subcomponents/CourseConfigPanel.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,7 @@ const CourseConfigPanel: React.FC<Props> = props => {
201201
}
202202
/>
203203
)}
204+
{enableExamMode && (
204205
<FormGroup
205206
// helperText="Please enter the course resume code. Students who attempt to use the DevTool will be asked this code to continue their session."
206207
inline={true}
@@ -218,6 +219,7 @@ const CourseConfigPanel: React.FC<Props> = props => {
218219
}
219220
/>
220221
</FormGroup>
222+
)}
221223
</div>
222224
</div>
223225
</div>

0 commit comments

Comments
 (0)