@instructure/quiz-taking
Version:
44 lines (36 loc) • 1.52 kB
JavaScript
import {connect} from '@instructure/quiz-core/common/react-redux'
import {getQuizSessions} from '@instructure/quiz-core/moderating/api/quizSessions'
import {getQuizSessionById} from '@instructure/quiz-core/common/selectors/quizSessions'
import {AttemptHistory as AttemptHistoryPresenter} from './presenter'
function getAttemptData(state, attempt) {
let authoritativeResult, quizSession
let resultObject = {}
if (attempt.quizSessionId) {
quizSession = getQuizSessionById(state, attempt.quizSessionId)
authoritativeResult = quizSession.findAuthoritativeResult()
resultObject = authoritativeResult.toObject()
}
return {
...attempt,
score: resultObject.score,
pointsPossible: resultObject.pointsPossible,
}
}
export function mapStateToProps(state, ownProps) {
const {attemptHistory} = ownProps
if (!attemptHistory || attemptHistory.length === 0) return {}
let attemptHistoryWithData = attemptHistory.map(attempt => getAttemptData(state, attempt))
if (ownProps.findAuthoritativeAttempt) {
const authoritativeAttempt = ownProps.findAuthoritativeAttempt(attemptHistoryWithData)
attemptHistoryWithData = attemptHistoryWithData.map(attempt => ({
...attempt,
authoritative: attempt === authoritativeAttempt,
}))
}
return {
attemptHistory: attemptHistoryWithData,
}
}
export const mapDispatchToProps = {getQuizSessions}
export const AttemptHistory = connect(mapStateToProps, mapDispatchToProps)(AttemptHistoryPresenter)
export default AttemptHistory