mirror of
https://github.com/plankanban/planka.git
synced 2025-07-22 14:49:43 +02:00
Project managers, board members, auto-update after reconnection, refactoring
This commit is contained in:
parent
d6cb1f6683
commit
b39119ace4
478 changed files with 21226 additions and 19495 deletions
|
@ -43,6 +43,51 @@ export default class extends Model {
|
|||
|
||||
static reducer({ type, payload }, Card) {
|
||||
switch (type) {
|
||||
case ActionTypes.LOCATION_CHANGE_HANDLE:
|
||||
case ActionTypes.CORE_INITIALIZE:
|
||||
case ActionTypes.PROJECT_MANAGER_CREATE_HANDLE:
|
||||
case ActionTypes.BOARD_MEMBERSHIP_CREATE_HANDLE:
|
||||
if (payload.cards) {
|
||||
payload.cards.forEach((card) => {
|
||||
Card.upsert(card);
|
||||
});
|
||||
}
|
||||
|
||||
if (payload.cardMemberships) {
|
||||
payload.cardMemberships.forEach(({ cardId, userId }) => {
|
||||
Card.withId(cardId).users.add(userId);
|
||||
});
|
||||
}
|
||||
|
||||
if (payload.cardLabels) {
|
||||
payload.cardLabels.forEach(({ cardId, labelId }) => {
|
||||
Card.withId(cardId).labels.add(labelId);
|
||||
});
|
||||
}
|
||||
|
||||
break;
|
||||
case ActionTypes.SOCKET_RECONNECT_HANDLE:
|
||||
Card.all().delete();
|
||||
|
||||
if (payload.cards) {
|
||||
payload.cards.forEach((card) => {
|
||||
Card.upsert(card);
|
||||
});
|
||||
}
|
||||
|
||||
if (payload.cardMemberships) {
|
||||
payload.cardMemberships.forEach(({ cardId, userId }) => {
|
||||
Card.withId(cardId).users.add(userId);
|
||||
});
|
||||
}
|
||||
|
||||
if (payload.cardLabels) {
|
||||
payload.cardLabels.forEach(({ cardId, labelId }) => {
|
||||
Card.withId(cardId).labels.add(labelId);
|
||||
});
|
||||
}
|
||||
|
||||
break;
|
||||
case ActionTypes.USER_TO_CARD_ADD: {
|
||||
const cardModel = Card.withId(payload.cardId);
|
||||
cardModel.users.add(payload.id);
|
||||
|
@ -53,11 +98,25 @@ export default class extends Model {
|
|||
|
||||
break;
|
||||
}
|
||||
case ActionTypes.USER_TO_CARD_ADD__SUCCESS:
|
||||
case ActionTypes.USER_TO_CARD_ADD_HANDLE:
|
||||
try {
|
||||
Card.withId(payload.cardMembership.cardId).users.add(payload.cardMembership.userId);
|
||||
} catch {} // eslint-disable-line no-empty
|
||||
|
||||
break;
|
||||
case ActionTypes.USER_FROM_CARD_REMOVE:
|
||||
Card.withId(payload.cardId).users.remove(payload.id);
|
||||
|
||||
break;
|
||||
case ActionTypes.BOARD_FETCH_SUCCEEDED:
|
||||
case ActionTypes.USER_FROM_CARD_REMOVE__SUCCESS:
|
||||
case ActionTypes.USER_FROM_CARD_REMOVE_HANDLE:
|
||||
try {
|
||||
Card.withId(payload.cardMembership.cardId).users.remove(payload.cardMembership.userId);
|
||||
} catch {} // eslint-disable-line no-empty
|
||||
|
||||
break;
|
||||
case ActionTypes.BOARD_FETCH__SUCCESS:
|
||||
payload.cards.forEach((card) => {
|
||||
Card.upsert(card);
|
||||
});
|
||||
|
@ -74,14 +133,34 @@ export default class extends Model {
|
|||
case ActionTypes.LABEL_TO_CARD_ADD:
|
||||
Card.withId(payload.cardId).labels.add(payload.id);
|
||||
|
||||
break;
|
||||
case ActionTypes.LABEL_TO_CARD_ADD__SUCCESS:
|
||||
case ActionTypes.LABEL_TO_CARD_ADD_HANDLE:
|
||||
try {
|
||||
Card.withId(payload.cardLabel.cardId).labels.add(payload.cardLabel.labelId);
|
||||
} catch {} // eslint-disable-line no-empty
|
||||
|
||||
break;
|
||||
case ActionTypes.LABEL_FROM_CARD_REMOVE:
|
||||
Card.withId(payload.cardId).labels.remove(payload.id);
|
||||
|
||||
break;
|
||||
case ActionTypes.LABEL_FROM_CARD_REMOVE__SUCCESS:
|
||||
case ActionTypes.LABEL_FROM_CARD_REMOVE_HANDLE:
|
||||
try {
|
||||
Card.withId(payload.cardLabel.cardId).labels.remove(payload.cardLabel.labelId);
|
||||
} catch {} // eslint-disable-line no-empty
|
||||
|
||||
break;
|
||||
case ActionTypes.CARD_CREATE:
|
||||
case ActionTypes.CARD_FETCH_SUCCEEDED:
|
||||
case ActionTypes.NOTIFICATION_CREATE_RECEIVED:
|
||||
case ActionTypes.CARD_CREATE_HANDLE:
|
||||
case ActionTypes.CARD_UPDATE__SUCCESS:
|
||||
case ActionTypes.CARD_UPDATE_HANDLE:
|
||||
Card.upsert(payload.card);
|
||||
|
||||
break;
|
||||
case ActionTypes.CARD_CREATE__SUCCESS:
|
||||
Card.withId(payload.localId).delete();
|
||||
Card.upsert(payload.card);
|
||||
|
||||
break;
|
||||
|
@ -90,77 +169,33 @@ export default class extends Model {
|
|||
|
||||
break;
|
||||
case ActionTypes.CARD_DELETE:
|
||||
Card.withId(payload.id).deleteWithRelated();
|
||||
Card.withId(payload.id).delete();
|
||||
|
||||
break;
|
||||
case ActionTypes.CARD_CREATE_SUCCEEDED:
|
||||
Card.withId(payload.localId).delete();
|
||||
Card.upsert(payload.card);
|
||||
case ActionTypes.CARD_DELETE__SUCCESS:
|
||||
case ActionTypes.CARD_DELETE_HANDLE: {
|
||||
const cardModel = Card.withId(payload.card.id);
|
||||
|
||||
payload.cardMemberships.forEach(({ cardId, userId }) => {
|
||||
Card.withId(cardId).users.add(userId);
|
||||
});
|
||||
|
||||
payload.cardLabels.forEach(({ cardId, labelId }) => {
|
||||
Card.withId(cardId).labels.add(labelId);
|
||||
});
|
||||
|
||||
break;
|
||||
case ActionTypes.CARD_CREATE_RECEIVED:
|
||||
Card.upsert(payload.card);
|
||||
|
||||
payload.cardMemberships.forEach(({ cardId, userId }) => {
|
||||
Card.withId(cardId).users.add(userId);
|
||||
});
|
||||
|
||||
payload.cardLabels.forEach(({ cardId, labelId }) => {
|
||||
Card.withId(cardId).labels.add(labelId);
|
||||
});
|
||||
|
||||
break;
|
||||
case ActionTypes.CARD_UPDATE_RECEIVED: {
|
||||
const card = Card.withId(payload.card.id);
|
||||
|
||||
if (card) {
|
||||
card.update(payload.card);
|
||||
if (cardModel) {
|
||||
cardModel.deleteWithRelated();
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case ActionTypes.CARD_DELETE_RECEIVED:
|
||||
Card.withId(payload.card.id).deleteWithRelated();
|
||||
|
||||
break;
|
||||
case ActionTypes.CARD_MEMBERSHIP_CREATE_RECEIVED:
|
||||
Card.withId(payload.cardMembership.cardId).users.add(payload.cardMembership.userId);
|
||||
|
||||
break;
|
||||
case ActionTypes.CARD_MEMBERSHIP_DELETE_RECEIVED:
|
||||
Card.withId(payload.cardMembership.cardId).users.remove(payload.cardMembership.userId);
|
||||
|
||||
break;
|
||||
case ActionTypes.CARD_LABEL_CREATE_RECEIVED:
|
||||
Card.withId(payload.cardLabel.cardId).labels.add(payload.cardLabel.labelId);
|
||||
|
||||
break;
|
||||
case ActionTypes.CARD_LABEL_DELETE_RECEIVED:
|
||||
Card.withId(payload.cardLabel.cardId).labels.remove(payload.cardLabel.labelId);
|
||||
|
||||
break;
|
||||
case ActionTypes.ACTIONS_FETCH_REQUESTED:
|
||||
case ActionTypes.ACTIONS_FETCH:
|
||||
Card.withId(payload.cardId).update({
|
||||
isActionsFetching: true,
|
||||
});
|
||||
|
||||
break;
|
||||
case ActionTypes.ACTIONS_FETCH_SUCCEEDED:
|
||||
case ActionTypes.ACTIONS_FETCH__SUCCESS:
|
||||
Card.withId(payload.cardId).update({
|
||||
isActionsFetching: false,
|
||||
isAllActionsFetched: payload.actions.length < Config.ACTIONS_LIMIT,
|
||||
});
|
||||
|
||||
break;
|
||||
case ActionTypes.NOTIFICATIONS_FETCH_SUCCEEDED:
|
||||
case ActionTypes.NOTIFICATION_CREATE_HANDLE:
|
||||
payload.cards.forEach((card) => {
|
||||
Card.upsert(card);
|
||||
});
|
||||
|
@ -188,11 +223,14 @@ export default class extends Model {
|
|||
});
|
||||
}
|
||||
|
||||
deleteWithRelated() {
|
||||
deleteRelated() {
|
||||
this.tasks.delete();
|
||||
this.attachments.delete();
|
||||
this.actions.delete();
|
||||
}
|
||||
|
||||
deleteWithRelated() {
|
||||
this.deleteRelated();
|
||||
this.delete();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue