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:
parent
ad04208c8a
commit
e7541789cd
2 changed files with 23 additions and 18 deletions
|
@ -3,25 +3,36 @@ module.exports = {
|
|||
const { currentUser } = this.req;
|
||||
|
||||
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);
|
||||
const membershipBoardIds = await sails.helpers.utils.mapRecords(boardMemberships, 'boardId');
|
||||
let boardMemberships = await sails.helpers.users.getBoardMemberships(currentUser.id);
|
||||
|
||||
const membershipBoards = await sails.helpers.boards.getMany({
|
||||
let membershipBoardIds = sails.helpers.utils.mapRecords(boardMemberships, 'boardId');
|
||||
|
||||
let membershipBoards = await sails.helpers.boards.getMany({
|
||||
id: membershipBoardIds,
|
||||
projectId: {
|
||||
'!=': managerProjectIds,
|
||||
},
|
||||
});
|
||||
|
||||
const membershipProjectIds = sails.helpers.utils.mapRecords(
|
||||
membershipBoards,
|
||||
'projectId',
|
||||
true,
|
||||
let membershipProjectIds = sails.helpers.utils.mapRecords(membershipBoards, 'projectId', true);
|
||||
const membershipProjects = await sails.helpers.projects.getMany(membershipProjectIds);
|
||||
|
||||
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 projects = await sails.helpers.projects.getMany(projectIds);
|
||||
const projects = [...managerProjects, ...membershipProjects];
|
||||
|
||||
const projectManagers = await sails.helpers.projects.getProjectManagers(projectIds);
|
||||
|
||||
|
|
|
@ -10,12 +10,6 @@ module.exports = {
|
|||
},
|
||||
|
||||
async fn(inputs) {
|
||||
const boardIds = await sails.helpers.projects.getBoardIds(inputs.record.id);
|
||||
|
||||
await BoardMembership.destroy({
|
||||
boardId: boardIds,
|
||||
}).fetch();
|
||||
|
||||
const projectManagers = await ProjectManager.destroy({
|
||||
projectId: inputs.record.id,
|
||||
}).fetch();
|
||||
|
@ -25,14 +19,14 @@ module.exports = {
|
|||
if (project) {
|
||||
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 userIds = _.union(managerUserIds, memberUserIds);
|
||||
|
||||
userIds.forEach((userId) => {
|
||||
sails.sockets.removeRoomMembersFromRooms(
|
||||
`user:${userId}`,
|
||||
boardIds.map((boardId) => `board:${boardId}`),
|
||||
);
|
||||
sails.sockets.removeRoomMembersFromRooms(`user:${userId}`, boardRooms);
|
||||
|
||||
sails.sockets.broadcast(
|
||||
`user:${userId}`,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue