import React, { useEffect } from 'react'; import { connect } from 'react-redux'; import { setAutoplayValues } from 'Duck/sessions'; import { withSiteId, 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 { siteId: string; 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 { siteId, 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); } } }, []); const nextHandler = () => { props.history.push(withSiteId(sessionRoute(nextId), siteId)); }; const prevHandler = () => { props.history.push(withSiteId(sessionRoute(previousId), siteId)); }; 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']), siteId: state.getIn(['site', 'siteId']), }), { setAutoplayValues, fetchAutoplaySessions } )(withRouter(QueueControls));