Files
worklenz/worklenz-backend/src/socket.io/commands/on-task-subscriber-change.ts

38 lines
1.1 KiB
TypeScript

import {Server, Socket} from "socket.io";
import db from "../../config/db";
import {SocketEvents} from "../events";
import {log_error} from "../util";
import TasksControllerV2 from "../../controllers/tasks-controller-v2";
interface ITaskSubscribeRequest {
mode: number;
task_id: string;
user_id: string;
team_member_id: string;
}
export async function on_task_subscriber_change(_io: Server, socket: Socket, data?: ITaskSubscribeRequest) {
if (!data) return;
try {
const isSubscribe = data.mode == 0;
const q = isSubscribe
? `INSERT INTO task_subscribers (user_id, task_id, team_member_id, action)
VALUES ($1, $2, $3, 'WHEN_DONE');`
: `DELETE
FROM task_subscribers
WHERE user_id = $1
AND task_id = $2
AND team_member_id = $3;`;
await db.query(q, [data.user_id, data.task_id, data.team_member_id]);
const subscribers = await TasksControllerV2.getTaskSubscribers(data.task_id);
socket.emit(SocketEvents.TASK_SUBSCRIBERS_CHANGE.toString(), subscribers);
return;
} catch (error) {
log_error(error);
}
}