@instructure/quiz-taking
Version:
32 lines (25 loc) • 1.14 kB
JavaScript
import {connect} from '@instructure/quiz-core/common/react-redux'
import {screenreaderNotification} from '@instructure/quiz-core/common/actions/alerts'
import {pinSessionItem} from '@instructure/quiz-core/common/api/quizSessions'
import {getActiveQuizSession} from '@instructure/quiz-core/common/selectors/quizSessions'
import {TakingSidebarItem as SidebarItem} from './presenter'
function mapStateToProps(state, ownProps) {
const quizSession = getActiveQuizSession(state)
const responses = state.taking.get('responses')
// Check if there's a response at this position by finding any response
// whose position property matches the actual position (not the display question number)
const isAnswered = responses
? responses.some(response => response?.get('position') === ownProps.actualPosition)
: false
return {
isPinned: quizSession.pins().includes(ownProps.position),
isAnswered,
quizSession,
}
}
const mapDispatchToProps = {
screenreaderNotification,
pinSessionItem,
}
export const TakingSidebarItem = connect(mapStateToProps, mapDispatchToProps)(SidebarItem)
export default TakingSidebarItem