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

131 lines
3.5 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,
2020-04-21 05:04:34 +05:00
attachmentsForCurrentCardSelector,
2019-08-31 04:07:25 +05:00
currentCardSelector,
currentUserSelector,
labelsForCurrentBoardSelector,
labelsForCurrentCardSelector,
membershipsForCurrentProjectSelector,
2020-05-05 01:30:06 +05:00
pathSelector,
projectsToListsForCurrentUserSelector,
2019-08-31 04:07:25 +05:00
tasksForCurrentCardSelector,
usersForCurrentCardSelector,
} from '../selectors';
import {
addLabelToCurrentCard,
addUserToCurrentCard,
2020-04-21 05:04:34 +05:00
createAttachmentInCurrentCard,
2019-08-31 04:07:25 +05:00
createCommentActionInCurrentCard,
createLabelInCurrentBoard,
createTaskInCurrentCard,
2020-04-21 05:04:34 +05:00
deleteAttachment,
2019-08-31 04:07:25 +05:00
deleteCommentAction,
deleteCurrentCard,
deleteLabel,
deleteTask,
fetchActionsInCurrentCard,
2020-05-05 01:30:06 +05:00
fetchBoard,
moveCurrentCard,
2019-08-31 04:07:25 +05:00
removeLabelFromCurrentCard,
removeUserFromCurrentCard,
2020-05-05 01:30:06 +05:00
transferCurrentCard,
2020-04-21 05:04:34 +05:00
updateAttachment,
2019-08-31 04:07:25 +05:00
updateCommentAction,
updateCurrentCard,
updateLabel,
updateTask,
} from '../actions/entry';
import Paths from '../constants/Paths';
import CardModal from '../components/CardModal';
2020-03-25 00:15:47 +05:00
const mapStateToProps = (state) => {
2020-05-05 01:30:06 +05:00
const { projectId } = pathSelector(state);
2019-08-31 04:07:25 +05:00
const { isAdmin } = currentUserSelector(state);
2020-05-05 01:30:06 +05:00
const allProjectsToLists = projectsToListsForCurrentUserSelector(state);
2019-08-31 04:07:25 +05:00
const allProjectMemberships = membershipsForCurrentProjectSelector(state);
const allLabels = labelsForCurrentBoardSelector(state);
const {
name,
description,
dueDate,
2019-08-31 04:07:25 +05:00
timer,
isSubscribed,
isActionsFetching,
isAllActionsFetched,
2020-05-05 01:30:06 +05:00
listId,
2019-08-31 04:07:25 +05:00
boardId,
} = currentCardSelector(state);
const users = usersForCurrentCardSelector(state);
const labels = labelsForCurrentCardSelector(state);
const tasks = tasksForCurrentCardSelector(state);
2020-04-21 05:04:34 +05:00
const attachments = attachmentsForCurrentCardSelector(state);
2019-08-31 04:07:25 +05:00
const actions = actionsForCurrentCardSelector(state);
return {
name,
description,
dueDate,
2019-08-31 04:07:25 +05:00
timer,
isSubscribed,
isActionsFetching,
isAllActionsFetched,
2020-05-05 01:30:06 +05:00
listId,
boardId,
projectId,
2019-08-31 04:07:25 +05:00
users,
labels,
tasks,
2020-04-21 05:04:34 +05:00
attachments,
2019-08-31 04:07:25 +05:00
actions,
2020-05-05 01:30:06 +05:00
allProjectsToLists,
2019-08-31 04:07:25 +05:00
allProjectMemberships,
allLabels,
isEditable: isAdmin,
};
};
2020-03-25 00:15:47 +05:00
const mapDispatchToProps = (dispatch) =>
bindActionCreators(
{
onUpdate: updateCurrentCard,
2020-05-05 01:30:06 +05:00
onMove: moveCurrentCard,
onTransfer: transferCurrentCard,
onDelete: deleteCurrentCard,
onUserAdd: addUserToCurrentCard,
onUserRemove: removeUserFromCurrentCard,
2020-05-05 01:30:06 +05:00
onBoardFetch: fetchBoard,
onLabelAdd: addLabelToCurrentCard,
onLabelRemove: removeLabelFromCurrentCard,
onLabelCreate: createLabelInCurrentBoard,
onLabelUpdate: updateLabel,
onLabelDelete: deleteLabel,
onTaskCreate: createTaskInCurrentCard,
onTaskUpdate: updateTask,
onTaskDelete: deleteTask,
2020-04-21 05:04:34 +05:00
onAttachmentCreate: createAttachmentInCurrentCard,
onAttachmentUpdate: updateAttachment,
onAttachmentDelete: deleteAttachment,
onActionsFetch: fetchActionsInCurrentCard,
onCommentActionCreate: createCommentActionInCurrentCard,
onCommentActionUpdate: updateCommentAction,
onCommentActionDelete: deleteCommentAction,
push,
},
dispatch,
);
2019-08-31 04:07:25 +05:00
const mergeProps = (stateProps, dispatchProps) => ({
2020-05-05 01:30:06 +05:00
...stateProps,
2019-08-31 04:07:25 +05:00
...omit(dispatchProps, 'push'),
onClose: () => dispatchProps.push(Paths.BOARDS.replace(':id', stateProps.boardId)),
});
export default connect(mapStateToProps, mapDispatchToProps, mergeProps)(CardModal);