@instructure/quiz-grading
Version:
The Quiz React SDK by Instructure Inc.
52 lines (44 loc) • 1.97 kB
JavaScript
import {compose} from 'redux'
import {Map} from 'immutable'
import SessionItemResultWrapperPresenter from './presenter'
import {connect} from '@instructure/quiz-core/common/react-redux'
import {makeEditable} from '@instructure/quiz-core/common/components/shared/functionality/makeEditable'
import {makeScrollable} from '@instructure/quiz-core/common/components/shared/functionality/makeScrollable'
import {setActiveItem} from '@instructure/quiz-core/common/actions/grading'
import {toggleRegradingEditMode} from '@instructure/quiz-core/common/actions/regrading'
import {getActiveQuiz} from '@instructure/quiz-core/common/selectors/quizzes'
// for Redux caching
const emptyMap = Map()
function mapStateToProps(state, props) {
const sessionItemResult = props.sessionItem.sessionItemResult
const workingSessionItemResult = sessionItemResult.getWorkingInstance()
const modifications = state.modifications.getIn(
['sessionItemResults', props.sessionItem.id],
emptyMap,
)
const features = state.features || []
const regradingFromSpeedGrader = features.includes('regrading_from_speedgrader') || false
const quiz = getActiveQuiz(state)
return {
activeItemId: state.grading.get('activeItemId'),
activeQuizSessionId: state.quizSessions.get('activeQuizSessionId'),
appContainer: state.ui.get('appContainer'),
gradeByQuestionEnabled: state.grading.get('gradeByQuestionEnabled'),
graderFeedback: workingSessionItemResult.getIn(['feedback', 'graderFeedback'], emptyMap),
itemResultsModifications: modifications,
scrollKey: props.sessionItem.id,
sessionItemResult,
regradingFromSpeedGrader,
isSurvey: quiz.isSurvey(),
}
}
const dispatchableActions = {
setActiveItem,
toggleRegradingEditMode,
}
export const SessionItemResultWrapper = compose(
connect(mapStateToProps, dispatchableActions),
makeScrollable,
makeEditable,
)(SessionItemResultWrapperPresenter)
export default SessionItemResultWrapper