import React from 'react' import { Helmet } from 'react-helmet' import { withTranslation } from 'react-i18next' import { connect } from 'react-redux' import Message from '../Common/Message' import NoWorkouts from '../Common/NoWorkouts' import WorkoutsFilter from './WorkoutsFilter' import WorkoutsList from './WorkoutsList' import { getOrUpdateData } from '../../actions' import { getMoreWorkouts } from '../../actions/workouts' class Workouts extends React.Component { constructor(props, context) { super(props, context) this.state = { params: { page: 1, per_page: 10, }, } } componentDidMount() { this.props.loadWorkouts(this.state.params) } setParams(e) { const { params } = this.state if (e.target.value === '') { delete params[e.target.name] } else { params[e.target.name] = e.target.value } params.page = 1 this.setState(params) } render() { const { loading, loadWorkouts, loadMoreWorkouts, message, sports, t, user, workouts, } = this.props const { params } = this.state const paginationEnd = workouts.length > 0 ? workouts[workouts.length - 1].previous_workout === null : true return (
FitTrackee - {t('common:Workouts')} {message ? ( ) : (
loadWorkouts(params)} t={t} updateParams={e => this.setParams(e)} />
{!paginationEnd && ( { params.page += 1 loadMoreWorkouts(params) this.setState(params) }} /> )} {workouts.length === 0 && }
)}
) } } export default withTranslation()( connect( state => ({ workouts: state.workouts.data, loading: state.loading, message: state.message, sports: state.sports.data, user: state.user, }), dispatch => ({ loadWorkouts: params => { dispatch(getOrUpdateData('getData', 'workouts', params)) }, loadMoreWorkouts: params => { dispatch(getMoreWorkouts(params)) }, }) )(Workouts) )