mirror of
https://github.com/plankanban/planka.git
synced 2025-12-24 09:15:01 +03:00
fix: Socket bug fixes and improvements
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user