added changes ready to ship
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user