1
0
Fork 0
mirror of https://github.com/plankanban/planka.git synced 2025-07-24 15:49:46 +02:00

fix: Socket bug fixes and improvements

This commit is contained in:
Maksim Eltyshev 2022-10-03 12:11:19 +02:00
parent 4e876922f8
commit 9f16881965
6 changed files with 53 additions and 32 deletions

View file

@ -1,3 +1,5 @@
const { v4: uuid } = require('uuid');
module.exports = {
inputs: {
record: {
@ -29,18 +31,9 @@ module.exports = {
const boardMembership = await BoardMembership.destroyOne(inputs.record.id);
if (boardMembership) {
sails.sockets.broadcast(
`user:${boardMembership.userId}`,
'boardMembershipDelete',
{
item: boardMembership,
},
inputs.request,
);
const notifyBoard = () => {
const notify = (room) => {
sails.sockets.broadcast(
`board:${boardMembership.boardId}`,
room,
'boardMembershipDelete',
{
item: boardMembership,
@ -54,16 +47,32 @@ module.exports = {
inputs.project.id,
);
if (isProjectManager) {
notifyBoard();
} else {
// TODO: also remove if unsubscribed to user
if (!isProjectManager) {
sails.sockets.removeRoomMembersFromRooms(
`user:${boardMembership.userId}`,
`@user:${boardMembership.userId}`,
`board:${boardMembership.boardId}`,
notifyBoard,
() => {
notify(`board:${boardMembership.boardId}`);
},
);
}
notify(`user:${boardMembership.userId}`);
if (isProjectManager) {
const tempRoom = uuid();
sails.sockets.addRoomMembersToRooms(`board:${boardMembership.boardId}`, tempRoom, () => {
sails.sockets.removeRoomMembersFromRooms(
`user:${boardMembership.userId}`,
tempRoom,
() => {
notify(tempRoom);
sails.sockets.removeRoomMembersFromRooms(tempRoom, tempRoom);
},
);
});
}
}
return boardMembership;