mirror of
https://github.com/plankanban/planka.git
synced 2025-07-19 13:19:44 +02:00
82 lines
2.3 KiB
JavaScript
82 lines
2.3 KiB
JavaScript
|
import { bindActionCreators } from 'redux';
|
||
|
import { connect } from 'react-redux';
|
||
|
|
||
|
import {
|
||
|
labelsForCurrentBoardSelector,
|
||
|
makeCardByIdSelector,
|
||
|
makeLabelsByCardIdSelector,
|
||
|
makeNotificationsTotalByCardIdSelector,
|
||
|
makeTasksByCardIdSelector,
|
||
|
makeUsersByCardIdSelector,
|
||
|
membershipsForCurrentProjectSelector,
|
||
|
} from '../selectors';
|
||
|
import {
|
||
|
addLabelToCard,
|
||
|
addUserToCard,
|
||
|
createLabelInCurrentBoard,
|
||
|
deleteCard,
|
||
|
deleteLabel,
|
||
|
removeLabelFromCard,
|
||
|
removeUserFromCard,
|
||
|
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 }) => {
|
||
|
const allProjectMemberships = membershipsForCurrentProjectSelector(state);
|
||
|
const allLabels = labelsForCurrentBoardSelector(state);
|
||
|
|
||
|
const {
|
||
|
name, deadline, timer, isPersisted,
|
||
|
} = cardByIdSelector(state, id);
|
||
|
|
||
|
const users = usersByCardIdSelector(state, id);
|
||
|
const labels = labelsByCardIdSelector(state, id);
|
||
|
const tasks = tasksByCardIdSelector(state, id);
|
||
|
const notificationsTotal = notificationsTotalByCardIdSelector(state, id);
|
||
|
|
||
|
return {
|
||
|
id,
|
||
|
index,
|
||
|
name,
|
||
|
deadline,
|
||
|
timer,
|
||
|
isPersisted,
|
||
|
notificationsTotal,
|
||
|
users,
|
||
|
labels,
|
||
|
tasks,
|
||
|
allProjectMemberships,
|
||
|
allLabels,
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
|
||
|
const mapDispatchToProps = (dispatch, { id }) => bindActionCreators(
|
||
|
{
|
||
|
onUpdate: (data) => updateCard(id, data),
|
||
|
onDelete: () => deleteCard(id),
|
||
|
onUserAdd: (userId) => addUserToCard(userId, id),
|
||
|
onUserRemove: (userId) => removeUserFromCard(userId, id),
|
||
|
onLabelAdd: (labelId) => addLabelToCard(labelId, id),
|
||
|
onLabelRemove: (labelId) => removeLabelFromCard(labelId, id),
|
||
|
onLabelCreate: (data) => createLabelInCurrentBoard(data),
|
||
|
onLabelUpdate: (labelId, data) => updateLabel(labelId, data),
|
||
|
onLabelDelete: (labelId) => deleteLabel(labelId),
|
||
|
},
|
||
|
dispatch,
|
||
|
);
|
||
|
|
||
|
export default connect(
|
||
|
makeMapStateToProps,
|
||
|
mapDispatchToProps,
|
||
|
)(Card);
|