2019-08-31 04:07:25 +05:00
|
|
|
import { bindActionCreators } from 'redux';
|
|
|
|
import { connect } from 'react-redux';
|
|
|
|
|
|
|
|
import {
|
|
|
|
labelsForCurrentBoardSelector,
|
|
|
|
makeCardByIdSelector,
|
|
|
|
makeLabelsByCardIdSelector,
|
|
|
|
makeNotificationsTotalByCardIdSelector,
|
|
|
|
makeTasksByCardIdSelector,
|
|
|
|
makeUsersByCardIdSelector,
|
|
|
|
membershipsForCurrentProjectSelector,
|
2020-05-05 01:30:06 +05:00
|
|
|
pathSelector,
|
|
|
|
projectsToListsForCurrentUserSelector,
|
2019-08-31 04:07:25 +05:00
|
|
|
} from '../selectors';
|
|
|
|
import {
|
|
|
|
addLabelToCard,
|
|
|
|
addUserToCard,
|
|
|
|
createLabelInCurrentBoard,
|
|
|
|
deleteCard,
|
|
|
|
deleteLabel,
|
2020-05-05 01:30:06 +05:00
|
|
|
fetchBoard,
|
|
|
|
moveCard,
|
2019-08-31 04:07:25 +05:00
|
|
|
removeLabelFromCard,
|
|
|
|
removeUserFromCard,
|
2020-05-05 01:30:06 +05:00
|
|
|
transferCard,
|
2019-08-31 04:07:25 +05:00
|
|
|
updateLabel,
|
|
|
|
updateCard,
|
|
|
|
} from '../actions/entry';
|
|
|
|
import Card from '../components/Card';
|
|
|
|
|
|
|
|
const makeMapStateToProps = () => {
|
|
|
|
const cardByIdSelector = makeCardByIdSelector();
|
|
|
|
const usersByCardIdSelector = makeUsersByCardIdSelector();
|
|
|
|
const labelsByCardIdSelector = makeLabelsByCardIdSelector();
|
|
|
|
const tasksByCardIdSelector = makeTasksByCardIdSelector();
|
|
|
|
const notificationsTotalByCardIdSelector = makeNotificationsTotalByCardIdSelector();
|
|
|
|
|
|
|
|
return (state, { id, index }) => {
|
2020-05-05 01:30:06 +05:00
|
|
|
const { projectId } = pathSelector(state);
|
|
|
|
const allProjectsToLists = projectsToListsForCurrentUserSelector(state);
|
2019-08-31 04:07:25 +05:00
|
|
|
const allProjectMemberships = membershipsForCurrentProjectSelector(state);
|
|
|
|
const allLabels = labelsForCurrentBoardSelector(state);
|
|
|
|
|
2020-08-04 01:32:46 +05:00
|
|
|
const { name, dueDate, timer, coverUrl, boardId, listId, isPersisted } = cardByIdSelector(
|
2020-05-05 01:30:06 +05:00
|
|
|
state,
|
|
|
|
id,
|
|
|
|
);
|
2019-08-31 04:07:25 +05:00
|
|
|
|
|
|
|
const users = usersByCardIdSelector(state, id);
|
|
|
|
const labels = labelsByCardIdSelector(state, id);
|
|
|
|
const tasks = tasksByCardIdSelector(state, id);
|
|
|
|
const notificationsTotal = notificationsTotalByCardIdSelector(state, id);
|
|
|
|
|
|
|
|
return {
|
|
|
|
id,
|
|
|
|
index,
|
|
|
|
name,
|
2019-10-05 06:12:36 +05:00
|
|
|
dueDate,
|
2019-08-31 04:07:25 +05:00
|
|
|
timer,
|
2020-04-23 03:02:53 +05:00
|
|
|
coverUrl,
|
2020-05-05 01:30:06 +05:00
|
|
|
boardId,
|
2020-08-04 01:32:46 +05:00
|
|
|
listId,
|
2020-05-05 01:30:06 +05:00
|
|
|
projectId,
|
2019-08-31 04:07:25 +05:00
|
|
|
isPersisted,
|
|
|
|
notificationsTotal,
|
|
|
|
users,
|
|
|
|
labels,
|
|
|
|
tasks,
|
2020-05-05 01:30:06 +05:00
|
|
|
allProjectsToLists,
|
2019-08-31 04:07:25 +05:00
|
|
|
allProjectMemberships,
|
|
|
|
allLabels,
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
2020-02-03 18:42:31 +05:00
|
|
|
const mapDispatchToProps = (dispatch, { id }) =>
|
|
|
|
bindActionCreators(
|
|
|
|
{
|
2020-03-25 00:15:47 +05:00
|
|
|
onUpdate: (data) => updateCard(id, data),
|
2020-05-05 01:30:06 +05:00
|
|
|
onMove: (listId, index) => moveCard(id, listId, index),
|
|
|
|
onTransfer: (boardId, listId) => transferCard(id, boardId, listId),
|
2020-02-03 18:42:31 +05:00
|
|
|
onDelete: () => deleteCard(id),
|
2020-03-25 00:15:47 +05:00
|
|
|
onUserAdd: (userId) => addUserToCard(userId, id),
|
|
|
|
onUserRemove: (userId) => removeUserFromCard(userId, id),
|
2020-05-05 01:30:06 +05:00
|
|
|
onBoardFetch: fetchBoard,
|
2020-03-25 00:15:47 +05:00
|
|
|
onLabelAdd: (labelId) => addLabelToCard(labelId, id),
|
|
|
|
onLabelRemove: (labelId) => removeLabelFromCard(labelId, id),
|
|
|
|
onLabelCreate: (data) => createLabelInCurrentBoard(data),
|
2020-02-03 18:42:31 +05:00
|
|
|
onLabelUpdate: (labelId, data) => updateLabel(labelId, data),
|
2020-03-25 00:15:47 +05:00
|
|
|
onLabelDelete: (labelId) => deleteLabel(labelId),
|
2020-02-03 18:42:31 +05:00
|
|
|
},
|
|
|
|
dispatch,
|
|
|
|
);
|
2019-08-31 04:07:25 +05:00
|
|
|
|
2020-02-03 18:42:31 +05:00
|
|
|
export default connect(makeMapStateToProps, mapDispatchToProps)(Card);
|