import React, { useEffect } from 'react'; import { connect } from 'react-redux'; import { setAutoplayValues } from 'Duck/sessions'; import { session as sessionRoute } from 'App/routes'; import { Link, Icon, Tooltip } from 'UI';; import { withRouter, RouteComponentProps } from 'react-router-dom'; import cn from 'classnames'; import { fetchAutoplaySessions } from 'Duck/search'; const PER_PAGE = 10; interface Props extends RouteComponentProps { previousId: string; nextId: string; defaultList: any; currentPage: number; total: number; setAutoplayValues?: () => void; latestRequestTime: any; sessionIds: any; fetchAutoplaySessions?: (page: number) => Promise; } function QueueControls(props: Props) { const { previousId, nextId, currentPage, total, sessionIds, latestRequestTime, match: { // @ts-ignore params: { sessionId }, }, } = props; const disabled = sessionIds.length === 0; useEffect(() => { if (latestRequestTime) { props.setAutoplayValues(); const totalPages = Math.ceil(total / PER_PAGE); const index = sessionIds.indexOf(sessionId); // check for the last page and load the next if (currentPage !== totalPages && index === sessionIds.length - 1) { props.fetchAutoplaySessions(currentPage + 1).then(props.setAutoplayValues); } } }, []); return (
Play Previous Session
} disabled={!previousId} >
Play Next Session} disabled={!nextId} >
); } export default connect( (state: any) => ({ previousId: state.getIn(['sessions', 'previousId']), nextId: state.getIn(['sessions', 'nextId']), currentPage: state.getIn(['search', 'currentPage']) || 1, total: state.getIn(['sessions', 'total']) || 0, sessionIds: state.getIn(['sessions', 'sessionIds']) || [], latestRequestTime: state.getIn(['search', 'latestRequestTime']), }), { setAutoplayValues, fetchAutoplaySessions } )(withRouter(QueueControls))