mirror of
https://github.com/plankanban/planka.git
synced 2025-07-24 15:49:46 +02:00
ref: Refactoring
This commit is contained in:
parent
aa4723d7fe
commit
3f8216dca8
189 changed files with 3781 additions and 3486 deletions
|
@ -1,95 +0,0 @@
|
|||
import { Model, attr, fk } from 'redux-orm';
|
||||
|
||||
import ActionTypes from '../constants/ActionTypes';
|
||||
|
||||
export default class extends Model {
|
||||
static modelName = 'Action';
|
||||
|
||||
static fields = {
|
||||
id: attr(),
|
||||
type: attr(),
|
||||
data: attr(),
|
||||
createdAt: attr({
|
||||
getDefault: () => new Date(),
|
||||
}),
|
||||
isInCard: attr({
|
||||
getDefault: () => true,
|
||||
}),
|
||||
cardId: fk({
|
||||
to: 'Card',
|
||||
as: 'card',
|
||||
relatedName: 'actions',
|
||||
}),
|
||||
userId: fk({
|
||||
to: 'User',
|
||||
as: 'user',
|
||||
relatedName: 'actions',
|
||||
}),
|
||||
};
|
||||
|
||||
static reducer({ type, payload }, Action) {
|
||||
switch (type) {
|
||||
case ActionTypes.SOCKET_RECONNECT_HANDLE:
|
||||
Action.all().delete();
|
||||
|
||||
payload.actions.forEach((action) => {
|
||||
Action.upsert({
|
||||
...action,
|
||||
isInCard: false,
|
||||
});
|
||||
});
|
||||
|
||||
break;
|
||||
case ActionTypes.CORE_INITIALIZE:
|
||||
payload.actions.forEach((action) => {
|
||||
Action.upsert({
|
||||
...action,
|
||||
isInCard: false,
|
||||
});
|
||||
});
|
||||
|
||||
break;
|
||||
case ActionTypes.ACTIONS_FETCH__SUCCESS:
|
||||
case ActionTypes.ACTIONS_DETAILS_TOGGLE__SUCCESS:
|
||||
case ActionTypes.NOTIFICATION_CREATE_HANDLE:
|
||||
payload.actions.forEach((action) => {
|
||||
Action.upsert(action);
|
||||
});
|
||||
|
||||
break;
|
||||
case ActionTypes.ACTION_CREATE_HANDLE:
|
||||
case ActionTypes.ACTION_UPDATE_HANDLE:
|
||||
case ActionTypes.COMMENT_ACTION_CREATE:
|
||||
case ActionTypes.COMMENT_ACTION_UPDATE__SUCCESS:
|
||||
Action.upsert(payload.action);
|
||||
|
||||
break;
|
||||
case ActionTypes.ACTION_DELETE_HANDLE:
|
||||
case ActionTypes.COMMENT_ACTION_DELETE__SUCCESS: {
|
||||
const actionModel = Action.withId(payload.action.id);
|
||||
|
||||
if (actionModel) {
|
||||
actionModel.delete();
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case ActionTypes.COMMENT_ACTION_CREATE__SUCCESS:
|
||||
Action.withId(payload.localId).delete();
|
||||
Action.upsert(payload.action);
|
||||
|
||||
break;
|
||||
case ActionTypes.COMMENT_ACTION_UPDATE:
|
||||
Action.withId(payload.id).update({
|
||||
data: payload.data,
|
||||
});
|
||||
|
||||
break;
|
||||
case ActionTypes.COMMENT_ACTION_DELETE:
|
||||
Action.withId(payload.id).delete();
|
||||
|
||||
break;
|
||||
default:
|
||||
}
|
||||
}
|
||||
}
|
95
client/src/models/Activity.js
Executable file
95
client/src/models/Activity.js
Executable file
|
@ -0,0 +1,95 @@
|
|||
import { Model, attr, fk } from 'redux-orm';
|
||||
|
||||
import ActionTypes from '../constants/ActionTypes';
|
||||
|
||||
export default class extends Model {
|
||||
static modelName = 'Activity';
|
||||
|
||||
static fields = {
|
||||
id: attr(),
|
||||
type: attr(),
|
||||
data: attr(),
|
||||
createdAt: attr({
|
||||
getDefault: () => new Date(),
|
||||
}),
|
||||
isInCard: attr({
|
||||
getDefault: () => true,
|
||||
}),
|
||||
cardId: fk({
|
||||
to: 'Card',
|
||||
as: 'card',
|
||||
relatedName: 'activities',
|
||||
}),
|
||||
userId: fk({
|
||||
to: 'User',
|
||||
as: 'user',
|
||||
relatedName: 'activities',
|
||||
}),
|
||||
};
|
||||
|
||||
static reducer({ type, payload }, Activity) {
|
||||
switch (type) {
|
||||
case ActionTypes.SOCKET_RECONNECT_HANDLE:
|
||||
Activity.all().delete();
|
||||
|
||||
payload.activities.forEach((activity) => {
|
||||
Activity.upsert({
|
||||
...activity,
|
||||
isInCard: false,
|
||||
});
|
||||
});
|
||||
|
||||
break;
|
||||
case ActionTypes.CORE_INITIALIZE:
|
||||
payload.activities.forEach((activity) => {
|
||||
Activity.upsert({
|
||||
...activity,
|
||||
isInCard: false,
|
||||
});
|
||||
});
|
||||
|
||||
break;
|
||||
case ActionTypes.ACTIVITIES_FETCH__SUCCESS:
|
||||
case ActionTypes.ACTIVITIES_DETAILS_TOGGLE__SUCCESS:
|
||||
case ActionTypes.NOTIFICATION_CREATE_HANDLE:
|
||||
payload.activities.forEach((activity) => {
|
||||
Activity.upsert(activity);
|
||||
});
|
||||
|
||||
break;
|
||||
case ActionTypes.ACTIVITY_CREATE_HANDLE:
|
||||
case ActionTypes.ACTIVITY_UPDATE_HANDLE:
|
||||
case ActionTypes.COMMENT_ACTIVITY_CREATE:
|
||||
case ActionTypes.COMMENT_ACTIVITY_UPDATE__SUCCESS:
|
||||
Activity.upsert(payload.activity);
|
||||
|
||||
break;
|
||||
case ActionTypes.ACTIVITY_DELETE_HANDLE:
|
||||
case ActionTypes.COMMENT_ACTIVITY_DELETE__SUCCESS: {
|
||||
const activityModel = Activity.withId(payload.activity.id);
|
||||
|
||||
if (activityModel) {
|
||||
activityModel.delete();
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case ActionTypes.COMMENT_ACTIVITY_CREATE__SUCCESS:
|
||||
Activity.withId(payload.localId).delete();
|
||||
Activity.upsert(payload.activity);
|
||||
|
||||
break;
|
||||
case ActionTypes.COMMENT_ACTIVITY_UPDATE:
|
||||
Activity.withId(payload.id).update({
|
||||
data: payload.data,
|
||||
});
|
||||
|
||||
break;
|
||||
case ActionTypes.COMMENT_ACTIVITY_DELETE:
|
||||
Activity.withId(payload.id).delete();
|
||||
|
||||
break;
|
||||
default:
|
||||
}
|
||||
}
|
||||
}
|
|
@ -2,7 +2,7 @@ import { Model, attr, fk, many, oneToOne } from 'redux-orm';
|
|||
|
||||
import ActionTypes from '../constants/ActionTypes';
|
||||
import Config from '../constants/Config';
|
||||
import { ActionTypes as ActionTypesEnum } from '../constants/Enums';
|
||||
import { ActivityTypes } from '../constants/Enums';
|
||||
|
||||
export default class extends Model {
|
||||
static modelName = 'Card';
|
||||
|
@ -17,16 +17,16 @@ export default class extends Model {
|
|||
isSubscribed: attr({
|
||||
getDefault: () => false,
|
||||
}),
|
||||
isActionsFetching: attr({
|
||||
isActivitiesFetching: attr({
|
||||
getDefault: () => false,
|
||||
}),
|
||||
isAllActionsFetched: attr({
|
||||
isAllActivitiesFetched: attr({
|
||||
getDefault: () => false,
|
||||
}),
|
||||
isActionsDetailsVisible: attr({
|
||||
isActivitiesDetailsVisible: attr({
|
||||
getDefault: () => false,
|
||||
}),
|
||||
isActionsDetailsFetching: attr({
|
||||
isActivitiesDetailsFetching: attr({
|
||||
getDefault: () => false,
|
||||
}),
|
||||
boardId: fk({
|
||||
|
@ -189,44 +189,44 @@ export default class extends Model {
|
|||
|
||||
break;
|
||||
}
|
||||
case ActionTypes.ACTIONS_FETCH:
|
||||
case ActionTypes.ACTIVITIES_FETCH:
|
||||
Card.withId(payload.cardId).update({
|
||||
isActionsFetching: true,
|
||||
isActivitiesFetching: true,
|
||||
});
|
||||
|
||||
break;
|
||||
case ActionTypes.ACTIONS_FETCH__SUCCESS:
|
||||
case ActionTypes.ACTIVITIES_FETCH__SUCCESS:
|
||||
Card.withId(payload.cardId).update({
|
||||
isActionsFetching: false,
|
||||
isAllActionsFetched: payload.actions.length < Config.ACTIONS_LIMIT,
|
||||
isActivitiesFetching: false,
|
||||
isAllActivitiesFetched: payload.activities.length < Config.ACTIVITIES_LIMIT,
|
||||
});
|
||||
|
||||
break;
|
||||
case ActionTypes.ACTIONS_DETAILS_TOGGLE: {
|
||||
case ActionTypes.ACTIVITIES_DETAILS_TOGGLE: {
|
||||
const cardModel = Card.withId(payload.cardId);
|
||||
cardModel.isActionsDetailsVisible = payload.isVisible;
|
||||
cardModel.isActivitiesDetailsVisible = payload.isVisible;
|
||||
|
||||
if (payload.isVisible) {
|
||||
cardModel.isActionsDetailsFetching = true;
|
||||
cardModel.isActivitiesDetailsFetching = true;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case ActionTypes.ACTIONS_DETAILS_TOGGLE__SUCCESS: {
|
||||
case ActionTypes.ACTIVITIES_DETAILS_TOGGLE__SUCCESS: {
|
||||
const cardModel = Card.withId(payload.cardId);
|
||||
|
||||
cardModel.update({
|
||||
isAllActionsFetched: payload.actions.length < Config.ACTIONS_LIMIT,
|
||||
isActionsDetailsFetching: false,
|
||||
isAllActivitiesFetched: payload.activities.length < Config.ACTIVITIES_LIMIT,
|
||||
isActivitiesDetailsFetching: false,
|
||||
});
|
||||
|
||||
cardModel.actions.toModelArray().forEach((actionModel) => {
|
||||
if (actionModel.notification) {
|
||||
actionModel.update({
|
||||
cardModel.activities.toModelArray().forEach((activityModel) => {
|
||||
if (activityModel.notification) {
|
||||
activityModel.update({
|
||||
isInCard: false,
|
||||
});
|
||||
} else {
|
||||
actionModel.delete();
|
||||
activityModel.delete();
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -250,16 +250,16 @@ export default class extends Model {
|
|||
return this.attachments.orderBy('id', false);
|
||||
}
|
||||
|
||||
getFilteredOrderedInCardActionsQuerySet() {
|
||||
getFilteredOrderedInCardActivitiesQuerySet() {
|
||||
const filter = {
|
||||
isInCard: true,
|
||||
};
|
||||
|
||||
if (!this.isActionsDetailsVisible) {
|
||||
filter.type = ActionTypesEnum.COMMENT_CARD;
|
||||
if (!this.isActivitiesDetailsVisible) {
|
||||
filter.type = ActivityTypes.COMMENT_CARD;
|
||||
}
|
||||
|
||||
return this.actions.filter(filter).orderBy('id', false);
|
||||
return this.activities.filter(filter).orderBy('id', false);
|
||||
}
|
||||
|
||||
getUnreadNotificationsQuerySet() {
|
||||
|
@ -271,7 +271,7 @@ export default class extends Model {
|
|||
deleteRelated() {
|
||||
this.tasks.delete();
|
||||
this.attachments.delete();
|
||||
this.actions.delete();
|
||||
this.activities.delete();
|
||||
}
|
||||
|
||||
deleteWithRelated() {
|
||||
|
|
|
@ -20,9 +20,9 @@ export default class extends Model {
|
|||
as: 'card',
|
||||
relatedName: 'notifications',
|
||||
}),
|
||||
actionId: oneToOne({
|
||||
to: 'Action',
|
||||
as: 'action',
|
||||
activityId: oneToOne({
|
||||
to: 'Activity',
|
||||
as: 'activity',
|
||||
}),
|
||||
};
|
||||
|
||||
|
@ -31,8 +31,8 @@ export default class extends Model {
|
|||
case ActionTypes.LOCATION_CHANGE_HANDLE:
|
||||
case ActionTypes.PROJECT_MANAGER_CREATE_HANDLE:
|
||||
case ActionTypes.BOARD_MEMBERSHIP_CREATE_HANDLE:
|
||||
if (payload.notifications) {
|
||||
payload.notifications.forEach((notification) => {
|
||||
if (payload.deletedNotifications) {
|
||||
payload.deletedNotifications.forEach((notification) => {
|
||||
Notification.withId(notification.id).deleteWithRelated();
|
||||
});
|
||||
}
|
||||
|
|
|
@ -278,7 +278,7 @@ export default class extends Model {
|
|||
case ActionTypes.PROJECT_MANAGER_CREATE_HANDLE:
|
||||
case ActionTypes.BOARD_FETCH__SUCCESS:
|
||||
case ActionTypes.BOARD_MEMBERSHIP_CREATE_HANDLE:
|
||||
case ActionTypes.ACTIONS_FETCH__SUCCESS:
|
||||
case ActionTypes.ACTIVITIES_FETCH__SUCCESS:
|
||||
case ActionTypes.NOTIFICATION_CREATE_HANDLE:
|
||||
payload.users.forEach((user) => {
|
||||
User.upsert(user);
|
||||
|
|
|
@ -8,7 +8,7 @@ import List from './List';
|
|||
import Card from './Card';
|
||||
import Task from './Task';
|
||||
import Attachment from './Attachment';
|
||||
import Action from './Action';
|
||||
import Activity from './Activity';
|
||||
import Notification from './Notification';
|
||||
|
||||
export {
|
||||
|
@ -22,6 +22,6 @@ export {
|
|||
Card,
|
||||
Task,
|
||||
Attachment,
|
||||
Action,
|
||||
Activity,
|
||||
Notification,
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue