1
0
Fork 0
mirror of https://github.com/plankanban/planka.git synced 2025-07-23 07:09:44 +02:00

ref: Remove board types, refactoring

This commit is contained in:
Maksim Eltyshev 2022-12-26 21:10:50 +01:00
parent d39da61295
commit 5cd025ffb7
182 changed files with 1573 additions and 1239 deletions

View file

@ -1,8 +1,9 @@
import { Model, attr, fk } from 'redux-orm';
import { attr, fk } from 'redux-orm';
import BaseModel from './BaseModel';
import ActionTypes from '../constants/ActionTypes';
export default class extends Model {
export default class extends BaseModel {
static modelName = 'Activity';
static fields = {

View file

@ -1,8 +1,9 @@
import { Model, attr, fk } from 'redux-orm';
import { attr, fk } from 'redux-orm';
import BaseModel from './BaseModel';
import ActionTypes from '../constants/ActionTypes';
export default class extends Model {
export default class extends BaseModel {
static modelName = 'Attachment';
static fields = {

View file

@ -0,0 +1,6 @@
import { Model } from 'redux-orm';
export default class BaseModel extends Model {
// eslint-disable-next-line no-underscore-dangle, class-methods-use-this
_onDelete() {}
}

View file

@ -1,13 +1,13 @@
import { Model, attr, fk, many } from 'redux-orm';
import { attr, fk, many } from 'redux-orm';
import BaseModel from './BaseModel';
import ActionTypes from '../constants/ActionTypes';
export default class extends Model {
export default class extends BaseModel {
static modelName = 'Board';
static fields = {
id: attr(),
type: attr(),
position: attr(),
name: attr(),
isFetching: attr({
@ -179,7 +179,7 @@ export default class extends Model {
return this.lists.orderBy('position');
}
getMembershipModel(userId) {
getMembershipModelForUser(userId) {
return this.memberships
.filter({
userId,
@ -187,7 +187,7 @@ export default class extends Model {
.first();
}
hasMemberUser(userId) {
hasMembershipForUser(userId) {
return this.memberships
.filter({
userId,
@ -195,6 +195,12 @@ export default class extends Model {
.exists();
}
isAvailableForUser(userId) {
return (
this.project && (this.project.hasManagerForUser(userId) || this.hasMembershipForUser(userId))
);
}
deleteRelated(exceptMemberUserId) {
this.memberships.toModelArray().forEach((boardMembershipModel) => {
if (boardMembershipModel.userId !== exceptMemberUserId) {

View file

@ -1,8 +1,9 @@
import { Model, attr, fk } from 'redux-orm';
import { attr, fk } from 'redux-orm';
import BaseModel from './BaseModel';
import ActionTypes from '../constants/ActionTypes';
export default class extends Model {
export default class extends BaseModel {
static modelName = 'BoardMembership';
static fields = {

View file

@ -1,10 +1,11 @@
import { Model, attr, fk, many, oneToOne } from 'redux-orm';
import { attr, fk, many, oneToOne } from 'redux-orm';
import BaseModel from './BaseModel';
import ActionTypes from '../constants/ActionTypes';
import Config from '../constants/Config';
import { ActivityTypes } from '../constants/Enums';
export default class extends Model {
export default class extends BaseModel {
static modelName = 'Card';
static fields = {
@ -74,7 +75,11 @@ export default class extends Model {
break;
case ActionTypes.SOCKET_RECONNECT_HANDLE:
Card.all().delete();
Card.all()
.toModelArray()
.forEach((cardModel) => {
cardModel.deleteWithClearable();
});
if (payload.cards) {
payload.cards.forEach((card) => {
@ -176,7 +181,7 @@ export default class extends Model {
break;
case ActionTypes.CARD_DELETE:
Card.withId(payload.id).delete();
Card.withId(payload.id).deleteWithRelated();
break;
case ActionTypes.CARD_DELETE__SUCCESS:
@ -220,15 +225,7 @@ export default class extends Model {
isActivitiesDetailsFetching: false,
});
cardModel.activities.toModelArray().forEach((activityModel) => {
if (activityModel.notification) {
activityModel.update({
isInCard: false,
});
} else {
activityModel.delete();
}
});
cardModel.deleteActivities();
break;
}
@ -268,10 +265,37 @@ export default class extends Model {
});
}
isAvailableForUser(userId) {
return this.board && this.board.isAvailableForUser(userId);
}
deleteClearable() {
this.users.clear();
this.labels.clear();
}
deleteActivities() {
this.activities.toModelArray().forEach((activityModel) => {
if (activityModel.notification) {
activityModel.update({
isInCard: false,
});
} else {
activityModel.delete();
}
});
}
deleteRelated() {
this.deleteClearable();
this.tasks.delete();
this.attachments.delete();
this.activities.delete();
this.deleteActivities();
}
deleteWithClearable() {
this.deleteClearable();
this.delete();
}
deleteWithRelated() {

View file

@ -1,8 +1,9 @@
import { Model, attr, fk } from 'redux-orm';
import { attr, fk } from 'redux-orm';
import BaseModel from './BaseModel';
import ActionTypes from '../constants/ActionTypes';
export default class extends Model {
export default class extends BaseModel {
static modelName = 'Label';
static fields = {

View file

@ -1,8 +1,9 @@
import { Model, attr, fk } from 'redux-orm';
import { attr, fk } from 'redux-orm';
import BaseModel from './BaseModel';
import ActionTypes from '../constants/ActionTypes';
export default class extends Model {
export default class extends BaseModel {
static modelName = 'List';
static fields = {

View file

@ -1,8 +1,9 @@
import { Model, attr, fk, oneToOne } from 'redux-orm';
import { attr, fk, oneToOne } from 'redux-orm';
import BaseModel from './BaseModel';
import ActionTypes from '../constants/ActionTypes';
export default class extends Model {
export default class extends BaseModel {
static modelName = 'Notification';
static fields = {

View file

@ -1,9 +1,10 @@
import { Model, attr, many } from 'redux-orm';
import { attr, many } from 'redux-orm';
import BaseModel from './BaseModel';
import ActionTypes from '../constants/ActionTypes';
import { ProjectBackgroundTypes } from '../constants/Enums';
export default class extends Model {
export default class extends BaseModel {
static modelName = 'Project';
static fields = {
@ -143,21 +144,21 @@ export default class extends Model {
return this.boards.orderBy('position');
}
getOrderedMemberBoardsModelArray(userId) {
getOrderedBoardsModelArrayForUser(userId) {
return this.getOrderedBoardsQuerySet()
.toModelArray()
.filter((boardModel) => boardModel.hasMemberUser(userId));
.filter((boardModel) => boardModel.hasMembershipForUser(userId));
}
getOrderedAvailableBoardsModelArray(userId) {
if (this.hasManagerUser(userId)) {
getOrderedBoardsModelArrayAvailableForUser(userId) {
if (this.hasManagerForUser(userId)) {
return this.getOrderedBoardsQuerySet().toModelArray();
}
return this.getOrderedMemberBoardsModelArray(userId);
return this.getOrderedBoardsModelArrayForUser(userId);
}
hasManagerUser(userId) {
hasManagerForUser(userId) {
return this.managers
.filter({
userId,
@ -165,8 +166,12 @@ export default class extends Model {
.exists();
}
hasMemberUserForAnyBoard(userId) {
return this.boards.toModelArray().some((boardModel) => boardModel.hasMemberUser(userId));
hasMembershipInAnyBoardForUser(userId) {
return this.boards.toModelArray().some((boardModel) => boardModel.hasMembershipForUser(userId));
}
isAvailableForUser(userId) {
return this.hasManagerForUser(userId) || this.hasMembershipInAnyBoardForUser(userId);
}
deleteRelated() {

View file

@ -1,8 +1,9 @@
import { Model, attr, fk } from 'redux-orm';
import { attr, fk } from 'redux-orm';
import BaseModel from './BaseModel';
import ActionTypes from '../constants/ActionTypes';
export default class extends Model {
export default class extends BaseModel {
static modelName = 'ProjectManager';
static fields = {

View file

@ -1,8 +1,9 @@
import { Model, attr, fk } from 'redux-orm';
import { attr, fk } from 'redux-orm';
import BaseModel from './BaseModel';
import ActionTypes from '../constants/ActionTypes';
export default class extends Model {
export default class extends BaseModel {
static modelName = 'Task';
static fields = {

View file

@ -1,5 +1,6 @@
import { Model, attr } from 'redux-orm';
import { attr } from 'redux-orm';
import BaseModel from './BaseModel';
import ActionTypes from '../constants/ActionTypes';
const DEFAULT_EMAIL_UPDATE_FORM = {
@ -29,7 +30,7 @@ const DEFAULT_USERNAME_UPDATE_FORM = {
error: null,
};
export default class extends Model {
export default class extends BaseModel {
static modelName = 'User';
static fields = {