import {bindActionCreators} from 'redux'
import CookieClient from 'common-fe/clients/cookie'
import Component from './component'
import connectPage from '../connect-page'
import {getCourse, showModal} from 'store/actions'
import {getCurrentPortfolio, getUser, makeGetCourse} from 'store/selectors'

const mapStateToProps = (state, props) => {
    // If there is no course ID specified in our URL,
    // check our cookies for the last course visited or
    // use the user's first course ('' if neither exist)
    const courseId = props.match?.params?.courseId
        ? decodeURIComponent(props.match.params.courseId)
        : CookieClient.get.courseId() || getUser(state).courses[0] || ''

    const getCourse = makeGetCourse(courseId)

    return {
        course: getCourse(state),
        courseId,
        portfolio: getCurrentPortfolio(state),
    }
}

const mapDispatchToProps = (dispatch) => {
    return bindActionCreators(
        {
            getCourse,
            showModal,
        },
        dispatch
    )
}

export default connectPage(Component, mapStateToProps, mapDispatchToProps)
