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

@@ -69,6 +69,31 @@ export const selectMembershipsForCurrentBoard = createSelector(
},
);
export const selectCurrentUserMembershipForCurrentBoard = createSelector(
orm,
(state) => selectPath(state).boardId,
(state) => selectCurrentUserId(state),
({ Board }, id, currentUserId) => {
if (!id) {
return id;
}
const boardModel = Board.withId(id);
if (!boardModel) {
return boardModel;
}
const boardMembershipModel = boardModel.getMembershipModelForUser(currentUserId);
if (!boardMembershipModel) {
return boardMembershipModel;
}
return boardMembershipModel.ref;
},
);
export const selectLabelsForCurrentBoard = createSelector(
orm,
(state) => selectPath(state).boardId,
@@ -147,31 +172,6 @@ export const selectFilterLabelsForCurrentBoard = createSelector(
},
);
export const selectCurrentUserMembershipForCurrentBoard = createSelector(
orm,
(state) => selectPath(state).boardId,
(state) => selectCurrentUserId(state),
({ Board }, id, currentUserId) => {
if (!id) {
return id;
}
const boardModel = Board.withId(id);
if (!boardModel) {
return boardModel;
}
const boardMembershipModel = boardModel.getMembershipModel(currentUserId);
if (!boardMembershipModel) {
return boardMembershipModel;
}
return boardMembershipModel.ref;
},
);
export const selectIsBoardWithIdExists = createSelector(
orm,
(_, id) => id,
@@ -183,10 +183,10 @@ export default {
selectBoardById,
selectCurrentBoard,
selectMembershipsForCurrentBoard,
selectCurrentUserMembershipForCurrentBoard,
selectLabelsForCurrentBoard,
selectListIdsForCurrentBoard,
selectFilterUsersForCurrentBoard,
selectFilterLabelsForCurrentBoard,
selectCurrentUserMembershipForCurrentBoard,
selectIsBoardWithIdExists,
};

View File

@@ -1,4 +1,5 @@
import router from './router';
import socket from './socket';
import core from './core';
import modals from './modals';
import users from './users';
@@ -13,6 +14,7 @@ import attachments from './attachments';
export default {
...router,
...socket,
...core,
...modals,
...users,

View File

@@ -67,10 +67,12 @@ export const selectBoardsForCurrentProject = createSelector(
return projectModel;
}
return projectModel.getOrderedAvailableBoardsModelArray(currentUserId).map((boardModel) => ({
...boardModel.ref,
isPersisted: !isLocalId(boardModel.id),
}));
return projectModel
.getOrderedBoardsModelArrayAvailableForUser(currentUserId)
.map((boardModel) => ({
...boardModel.ref,
isPersisted: !isLocalId(boardModel.id),
}));
},
);
@@ -89,7 +91,7 @@ export const selectIsCurrentUserManagerForCurrentProject = createSelector(
return false;
}
return projectModel.hasManagerUser(currentUserId);
return projectModel.hasManagerForUser(currentUserId);
},
);

View File

@@ -26,55 +26,35 @@ export const selectPath = createReduxOrmSelector(
case Paths.PROJECTS: {
const projectModel = Project.withId(pathsMatch.params.id);
if (!projectModel) {
if (!projectModel || !projectModel.isAvailableForUser(currentUserId)) {
return {
projectId: null,
};
}
if (!projectModel.hasManagerUser(currentUserId)) {
if (!projectModel.hasMemberUserForAnyBoard(currentUserId)) {
return {
projectId: null,
};
}
}
return {
projectId: projectModel.id,
};
}
case Paths.BOARDS: {
const boardModel = Board.withId(pathsMatch.params.id);
const projectModel = boardModel && boardModel.project;
if (!projectModel) {
if (!boardModel || !boardModel.isAvailableForUser(currentUserId)) {
return {
boardId: null,
projectId: null,
};
}
if (!projectModel.hasManagerUser(currentUserId)) {
if (!boardModel.hasMemberUser(currentUserId)) {
return {
boardId: null,
projectId: null,
};
}
}
return {
boardId: boardModel.id,
projectId: projectModel.id,
projectId: boardModel.projectId,
};
}
case Paths.CARDS: {
const cardModel = Card.withId(pathsMatch.params.id);
const boardModel = cardModel && cardModel.board;
const projectModel = boardModel && boardModel.project;
if (!projectModel) {
if (!cardModel || !cardModel.isAvailableForUser(currentUserId)) {
return {
cardId: null,
boardId: null,
@@ -82,20 +62,10 @@ export const selectPath = createReduxOrmSelector(
};
}
if (!projectModel.hasManagerUser(currentUserId)) {
if (!boardModel.hasMemberUser(currentUserId)) {
return {
cardId: null,
boardId: null,
projectId: null,
};
}
}
return {
cardId: cardModel.id,
boardId: boardModel.id,
projectId: projectModel.id,
boardId: cardModel.boardId,
projectId: cardModel.board.projectId,
};
}
default:

View File

@@ -0,0 +1,5 @@
export const selectIsSocketDisconnected = ({ socket: { isDisconnected } }) => isDisconnected;
export default {
selectIsSocketDisconnected,
};

View File

@@ -52,7 +52,7 @@ export const selectProjectsForCurrentUser = createSelector(
}
return userModel.getOrderedAvailableProjectsModelArray().map((projectModel) => {
const boardsModels = projectModel.getOrderedAvailableBoardsModelArray(userModel.id);
const boardsModels = projectModel.getOrderedBoardsModelArrayAvailableForUser(userModel.id);
let notificationsTotal = 0;
boardsModels.forEach((boardModel) => {
@@ -86,7 +86,7 @@ export const selectProjectsToListsForCurrentUser = createSelector(
return userModel.getOrderedAvailableProjectsModelArray().map((projectModel) => ({
...projectModel.ref,
boards: projectModel.getOrderedMemberBoardsModelArray(id).map((boardModel) => ({
boards: projectModel.getOrderedBoardsModelArrayForUser(id).map((boardModel) => ({
...boardModel.ref,
lists: boardModel.getOrderedListsQuerySet().toRefArray(),
})),