added changes ready to ship

This commit is contained in:
tusuii
2026-02-21 12:06:16 +05:30
parent 1788e364f1
commit 82077d38e6
39 changed files with 694 additions and 5600 deletions

View File

@@ -1,6 +1,7 @@
import { Router } from 'express';
import pool from '../db.js';
import { randomUUID } from 'crypto';
import { createNotification } from './notifications.js';
const router = Router();
@@ -88,6 +89,17 @@ router.post('/', async (req, res) => {
[actId, id, '📝 Task created']);
await conn.commit();
if (assignee) {
await createNotification(req, {
userId: assignee,
type: 'assignment',
title: 'New Task Assigned',
message: `You have been assigned to task: ${title}`,
link: `/tasks?id=${id}`
});
}
const task = await getFullTask(id);
res.status(201).json(task);
} catch (err) {
@@ -178,6 +190,24 @@ router.post('/:id/comments', async (req, res) => {
const timestamp = new Date();
await pool.query('INSERT INTO comments (id, task_id, user_id, text, timestamp) VALUES (?, ?, ?, ?, ?)',
[id, req.params.id, userId, text, timestamp]);
// Mention detection: @[Name](userId)
const mentions = text.match(/@\[([^\]]+)\]\(([^)]+)\)/g);
if (mentions) {
const mentionedUserIds = [...new Set(mentions.map(m => m.match(/\(([^)]+)\)/)[1]))];
for (const mId of mentionedUserIds) {
if (mId !== userId) {
await createNotification(req, {
userId: mId,
type: 'mention',
title: 'New Mention',
message: `You were mentioned in a comment on task ${req.params.id}`,
link: `/tasks?id=${req.params.id}`
});
}
}
}
res.status(201).json({ id, userId, text, timestamp: timestamp.toISOString() });
} catch (err) {
console.error('Add comment error:', err);