1
0
Fork 0
mirror of https://github.com/plankanban/planka.git synced 2025-07-19 13:19:44 +02:00
planka/client/src/containers/CardModalContainer.js

108 lines
2.8 KiB
JavaScript
Raw Normal View History

2019-08-31 04:07:25 +05:00
import { bindActionCreators } from 'redux';
import { connect } from 'react-redux';
import { push } from 'connected-react-router';
import omit from 'lodash/omit';
import {
actionsForCurrentCardSelector,
currentCardSelector,
currentUserSelector,
labelsForCurrentBoardSelector,
labelsForCurrentCardSelector,
membershipsForCurrentProjectSelector,
tasksForCurrentCardSelector,
usersForCurrentCardSelector,
} from '../selectors';
import {
addLabelToCurrentCard,
addUserToCurrentCard,
createCommentActionInCurrentCard,
createLabelInCurrentBoard,
createTaskInCurrentCard,
deleteCommentAction,
deleteCurrentCard,
deleteLabel,
deleteTask,
fetchActionsInCurrentCard,
removeLabelFromCurrentCard,
removeUserFromCurrentCard,
updateCommentAction,
updateCurrentCard,
updateLabel,
updateTask,
} from '../actions/entry';
import Paths from '../constants/Paths';
import CardModal from '../components/CardModal';
const mapStateToProps = state => {
2019-08-31 04:07:25 +05:00
const { isAdmin } = currentUserSelector(state);
const allProjectMemberships = membershipsForCurrentProjectSelector(state);
const allLabels = labelsForCurrentBoardSelector(state);
const {
name,
description,
dueDate,
2019-08-31 04:07:25 +05:00
timer,
isSubscribed,
isActionsFetching,
isAllActionsFetched,
boardId,
} = currentCardSelector(state);
const users = usersForCurrentCardSelector(state);
const labels = labelsForCurrentCardSelector(state);
const tasks = tasksForCurrentCardSelector(state);
const actions = actionsForCurrentCardSelector(state);
return {
name,
description,
dueDate,
2019-08-31 04:07:25 +05:00
timer,
isSubscribed,
isActionsFetching,
isAllActionsFetched,
users,
labels,
tasks,
actions,
allProjectMemberships,
allLabels,
boardId,
isEditable: isAdmin,
};
};
const mapDispatchToProps = dispatch =>
bindActionCreators(
{
onUpdate: updateCurrentCard,
onDelete: deleteCurrentCard,
onUserAdd: addUserToCurrentCard,
onUserRemove: removeUserFromCurrentCard,
onLabelAdd: addLabelToCurrentCard,
onLabelRemove: removeLabelFromCurrentCard,
onLabelCreate: createLabelInCurrentBoard,
onLabelUpdate: updateLabel,
onLabelDelete: deleteLabel,
onTaskCreate: createTaskInCurrentCard,
onTaskUpdate: updateTask,
onTaskDelete: deleteTask,
onActionsFetch: fetchActionsInCurrentCard,
onCommentActionCreate: createCommentActionInCurrentCard,
onCommentActionUpdate: updateCommentAction,
onCommentActionDelete: deleteCommentAction,
push,
},
dispatch,
);
2019-08-31 04:07:25 +05:00
const mergeProps = (stateProps, dispatchProps) => ({
...omit(stateProps, 'boardId'),
...omit(dispatchProps, 'push'),
onClose: () => dispatchProps.push(Paths.BOARDS.replace(':id', stateProps.boardId)),
});
export default connect(mapStateToProps, mapDispatchToProps, mergeProps)(CardModal);