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

fix: Change way to fix application crash when deleting project

This commit is contained in:
Maksim Eltyshev 2022-04-28 14:15:36 +05:00
parent ad04208c8a
commit e7541789cd
2 changed files with 23 additions and 18 deletions

View file

@ -3,25 +3,36 @@ module.exports = {
const { currentUser } = this.req; const { currentUser } = this.req;
const managerProjectIds = await sails.helpers.users.getManagerProjectIds(currentUser.id); const managerProjectIds = await sails.helpers.users.getManagerProjectIds(currentUser.id);
const managerProjects = await sails.helpers.projects.getMany(managerProjectIds);
const boardMemberships = await sails.helpers.users.getBoardMemberships(currentUser.id); let boardMemberships = await sails.helpers.users.getBoardMemberships(currentUser.id);
const membershipBoardIds = await sails.helpers.utils.mapRecords(boardMemberships, 'boardId');
const membershipBoards = await sails.helpers.boards.getMany({ let membershipBoardIds = sails.helpers.utils.mapRecords(boardMemberships, 'boardId');
let membershipBoards = await sails.helpers.boards.getMany({
id: membershipBoardIds, id: membershipBoardIds,
projectId: { projectId: {
'!=': managerProjectIds, '!=': managerProjectIds,
}, },
}); });
const membershipProjectIds = sails.helpers.utils.mapRecords( let membershipProjectIds = sails.helpers.utils.mapRecords(membershipBoards, 'projectId', true);
membershipBoards, const membershipProjects = await sails.helpers.projects.getMany(membershipProjectIds);
'projectId',
true, membershipProjectIds = sails.helpers.utils.mapRecords(membershipProjects);
membershipBoards = membershipBoards.filter((membershipBoard) =>
membershipProjectIds.includes(membershipBoard.projectId),
);
membershipBoardIds = sails.helpers.utils.mapRecords(membershipBoards);
boardMemberships = boardMemberships.filter((boardMembership) =>
membershipBoardIds.includes(boardMembership.boardId),
); );
const projectIds = [...managerProjectIds, ...membershipProjectIds]; const projectIds = [...managerProjectIds, ...membershipProjectIds];
const projects = await sails.helpers.projects.getMany(projectIds); const projects = [...managerProjects, ...membershipProjects];
const projectManagers = await sails.helpers.projects.getProjectManagers(projectIds); const projectManagers = await sails.helpers.projects.getProjectManagers(projectIds);

View file

@ -10,12 +10,6 @@ module.exports = {
}, },
async fn(inputs) { async fn(inputs) {
const boardIds = await sails.helpers.projects.getBoardIds(inputs.record.id);
await BoardMembership.destroy({
boardId: boardIds,
}).fetch();
const projectManagers = await ProjectManager.destroy({ const projectManagers = await ProjectManager.destroy({
projectId: inputs.record.id, projectId: inputs.record.id,
}).fetch(); }).fetch();
@ -25,14 +19,14 @@ module.exports = {
if (project) { if (project) {
const managerUserIds = sails.helpers.utils.mapRecords(projectManagers, 'userId'); const managerUserIds = sails.helpers.utils.mapRecords(projectManagers, 'userId');
const boardIds = await sails.helpers.projects.getBoardIds(project.id);
const boardRooms = boardIds.map((boardId) => `board:${boardId}`);
const memberUserIds = await sails.helpers.boards.getMemberUserIds(boardIds); const memberUserIds = await sails.helpers.boards.getMemberUserIds(boardIds);
const userIds = _.union(managerUserIds, memberUserIds); const userIds = _.union(managerUserIds, memberUserIds);
userIds.forEach((userId) => { userIds.forEach((userId) => {
sails.sockets.removeRoomMembersFromRooms( sails.sockets.removeRoomMembersFromRooms(`user:${userId}`, boardRooms);
`user:${userId}`,
boardIds.map((boardId) => `board:${boardId}`),
);
sails.sockets.broadcast( sails.sockets.broadcast(
`user:${userId}`, `user:${userId}`,