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 { 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);
|
||||||
|
|
||||||
|
|
|
@ -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}`,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue