You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.5 KiB
TypeScript
59 lines
1.5 KiB
TypeScript
import React from 'react';
|
|
import { connect } from 'react-redux';
|
|
|
|
import {
|
|
TasksQuery,
|
|
CombinedState
|
|
} from '../../reducers/interfaces';
|
|
|
|
import TasksPageComponent from '../../components/tasks-page/tasks-page';
|
|
|
|
import { getTasksAsync } from '../../actions/tasks-actions';
|
|
|
|
interface StateToProps {
|
|
tasksFetching: boolean;
|
|
gettingQuery: TasksQuery;
|
|
numberOfTasks: number;
|
|
numberOfVisibleTasks: number;
|
|
}
|
|
|
|
interface DispatchToProps {
|
|
getTasks: (gettingQuery: TasksQuery) => void;
|
|
}
|
|
|
|
function mapStateToProps(state: CombinedState): StateToProps {
|
|
const { tasks } = state;
|
|
|
|
return {
|
|
tasksFetching: state.tasks.fetching,
|
|
gettingQuery: tasks.gettingQuery,
|
|
numberOfTasks: state.tasks.count,
|
|
numberOfVisibleTasks: state.tasks.current.length,
|
|
};
|
|
}
|
|
|
|
function mapDispatchToProps(dispatch: any): DispatchToProps {
|
|
return {
|
|
getTasks: (query: TasksQuery) => {dispatch(getTasksAsync(query))}
|
|
}
|
|
}
|
|
|
|
type TasksPageContainerProps = StateToProps & DispatchToProps;
|
|
|
|
function TasksPageContainer(props: TasksPageContainerProps) {
|
|
return (
|
|
<TasksPageComponent
|
|
tasksFetching={props.tasksFetching}
|
|
gettingQuery={props.gettingQuery}
|
|
numberOfTasks={props.numberOfTasks}
|
|
numberOfVisibleTasks={props.numberOfVisibleTasks}
|
|
onGetTasks={props.getTasks}
|
|
/>
|
|
);
|
|
}
|
|
|
|
export default connect(
|
|
mapStateToProps,
|
|
mapDispatchToProps,
|
|
)(TasksPageContainer);
|