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

142 lines
4 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,
isCurrentUserManagerForCurrentProjectSelector,
isCurrentUserMemberForCurrentBoardSelector,
2019-08-31 04:07:25 +05:00
labelsForCurrentBoardSelector,
labelsForCurrentCardSelector,
membershipsForCurrentBoardSelector,
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,
moveTask,
2019-08-31 04:07:25 +05:00
removeLabelFromCurrentCard,
removeUserFromCurrentCard,
toggleActionsDetailsInCurrentCard,
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);
const allProjectsToLists = projectsToListsForCurrentUserSelector(state);
const isCurrentUserManager = isCurrentUserManagerForCurrentProjectSelector(state);
const allBoardMemberships = membershipsForCurrentBoardSelector(state);
2019-08-31 04:07:25 +05:00
const allLabels = labelsForCurrentBoardSelector(state);
const isCurrentUserMember = isCurrentUserMemberForCurrentBoardSelector(state);
2019-08-31 04:07:25 +05:00
const {
name,
description,
dueDate,
2019-08-31 04:07:25 +05:00
timer,
isSubscribed,
isActionsFetching,
isActionsDetailsVisible,
isActionsDetailsFetching,
2019-08-31 04:07:25 +05:00
isAllActionsFetched,
boardId,
listId,
2019-08-31 04:07:25 +05:00
} = 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,
isActionsDetailsVisible,
isActionsDetailsFetching,
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,
allBoardMemberships,
2019-08-31 04:07:25 +05:00
allLabels,
canEdit: isCurrentUserMember,
canEditAllCommentActions: isCurrentUserManager,
2019-08-31 04:07:25 +05:00
};
};
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,
onTaskMove: moveTask,
onTaskDelete: deleteTask,
2020-04-21 05:04:34 +05:00
onAttachmentCreate: createAttachmentInCurrentCard,
onAttachmentUpdate: updateAttachment,
onAttachmentDelete: deleteAttachment,
onActionsFetch: fetchActionsInCurrentCard,
onActionsDetailsToggle: toggleActionsDetailsInCurrentCard,
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);