UNPKG

trc-client-core

Version:
104 lines (85 loc) 2.97 kB
import reflux from 'reflux'; import xhr from 'trc-client-core/src/utils/xhr'; import {courses} from 'trc-client-core/src/utils/Request'; import createRequestActions from 'trc-client-core/src/utils/createRequestActions'; import {createAction} from 'redux-actions'; import { COURSE_PARTICIPATION_ENDPOINT, COURSE_SCORM_DATA_ENDPOINT, COURSE_ENDPOINT } from 'trc-client-core/src/constants/Endpoints'; import { COURSE_PARTICIPATION_FETCH, COURSE_PARTICIPATION_RECEIVE, COURSE_PARTICIPATION_ERROR, COURSE_FETCH, COURSE_RECEIVE, COURSE_ERROR, COURSE_LIST_FETCH, COURSE_LIST_RECEIVE, COURSE_LIST_ERROR, COURSE_SIMILAR_FETCH, COURSE_SIMILAR_RECEIVE, COURSE_SIMILAR_ERROR, COURSE_DELETE_SCORM_SAVE_DATA_FETCH, COURSE_DELETE_SCORM_SAVE_DATA_RECEIVE, COURSE_DELETE_SCORM_SAVE_DATA_ERROR } from 'trc-client-core/src/constants/ActionTypes'; // // Reflux // var CourseActions = reflux.createActions({ 'publish': {asyncResult: true}, 'fetchCourse': {asyncResult: true}, 'fetchCourses': {asyncResult: true}, 'fetchParticipation': {asyncResult: true} }); CourseActions.publish.listenAndPromise(course => xhr.post('/api/course/publish/' + course.id)); CourseActions.fetchCourses.listenAndPromise(query => xhr.get('/api/course/', query)); CourseActions.fetchCourse.listenAndPromise((courseCode, query) => xhr.get(COURSE_ENDPOINT + courseCode, query)); CourseActions.fetchParticipation.listenAndPromise(query => { if (query.participantId) { return xhr.get('/api/course_participation', { ...query, withEligibility: true }); } return Promise.reject(new Error('Course Participantion requires a participantId')); }); // // Redux // CourseActions.requestCourseList = createRequestActions( COURSE_LIST_FETCH, COURSE_LIST_RECEIVE, COURSE_LIST_ERROR, courses.list ) CourseActions.requestCourse = createRequestActions( COURSE_FETCH, COURSE_RECEIVE, COURSE_ERROR, courses.get ); CourseActions.requestCourseListSimilar = createRequestActions( COURSE_SIMILAR_FETCH, COURSE_SIMILAR_RECEIVE, COURSE_SIMILAR_ERROR, (query) => xhr.get('/api/course/similarcourses', query) ); CourseActions.courseParticipationRequest = (query) => (dispatch) => { if(query.participantId) { dispatch(createAction(COURSE_PARTICIPATION_FETCH)()); return xhr.get(COURSE_PARTICIPATION_ENDPOINT, query).then( (data) => Promise.resolve(dispatch(createAction(COURSE_PARTICIPATION_RECEIVE)(data))), (error) => Promise.reject(dispatch(createAction(COURSE_PARTICIPATION_ERROR)(error))) ) } } CourseActions.courseDeleteScormSaveData = createRequestActions( COURSE_DELETE_SCORM_SAVE_DATA_FETCH, COURSE_DELETE_SCORM_SAVE_DATA_RECEIVE, COURSE_DELETE_SCORM_SAVE_DATA_ERROR, query => xhr.get(COURSE_SCORM_DATA_ENDPOINT, query) ); module.exports = CourseActions;