diff --git a/back/api/channels.js b/back/api/channels.js index 6dbceab..1f1c17e 100644 --- a/back/api/channels.js +++ b/back/api/channels.js @@ -16,13 +16,6 @@ const { const rateLimit = require("express-rate-limit"); const slowDown = require("express-slow-down"); const { checkAuth } = require('../libs/middlewares'); -const multer = require('multer'); - -const upload = multer({ dest: 'data/attachements/' }) -upload.limits = { - fileSize: 1024 * 1024 * 5, - files: 1, -}; const limiter = rateLimit({ windowMs: 1 * 1000, @@ -163,7 +156,7 @@ router.get('/:name/messages', async (req, res) => { res.send(messages); }); -router.post('/:name/messages/send', speedLimiter, limiter, upload.single("attachement"), checkAuth, async (req, res) => { +router.post('/:name/messages/send', speedLimiter, limiter, checkAuth, async (req, res) => { const { message } = req.body; const name = req.params.name; const user = req.user; diff --git a/back/api/messages.js b/back/api/messages.js index d692a67..70bd6d9 100644 --- a/back/api/messages.js +++ b/back/api/messages.js @@ -7,6 +7,7 @@ const { addMention, getMentions, getUserByUsername, + setHasReplies, addReply, getMessageReplies } = require('../libs/mysql'); @@ -90,6 +91,7 @@ router.post('/:message_id/reply', speedLimiter, limiter, checkAuth, async (req, const channel = await getChannel(connection, originalMessage[0].channel_name); const sent_message = await addReply(connection, channel[0].id, user.id, message.replace("\"", "'"), message_id); + await setHasReplies(connection, message_id, true); const new_message_id = sent_message.insertId; for (const word of message.split(' ')) { diff --git a/back/libs/mysql.js b/back/libs/mysql.js index 4f48ab5..61ed50a 100644 --- a/back/libs/mysql.js +++ b/back/libs/mysql.js @@ -338,15 +338,11 @@ function deleteChannelMessages(connection, channel_id) { function getMessages(connection, channel_id, limit) { return new Promise((resolve, reject) => { connection.query( - `SELECT messages.id, messages.user_id, username, messages.content, messages.date, channels.name AS channel_name, (mentions.id IS NOT NULL) as has_mentions, (reply.id IS NOT NULL) as has_replies, (attachments.id IS NOT NULL) as has_attachments - FROM messages + `SELECT messages.id, user_id, username, content, date, channels.name AS channel_name, has_replies + FROM messages JOIN users ON messages.user_id = users.id JOIN channels ON messages.channel_id = channels.id - LEFT JOIN mentions ON messages.id = mentions.message_id - LEFT JOIN messages as reply ON messages.id = reply.reply_to_id - LEFT JOIN attachments ON messages.id = attachments.message_id - WHERE messages.channel_id = ? AND messages.reply_to_id IS NULL - GROUP BY messages.id + WHERE channel_id = ? AND reply_to_id IS NULL ORDER BY date DESC LIMIT ?`, [channel_id, limit], @@ -363,15 +359,11 @@ function getMessages(connection, channel_id, limit) { function getMessage(connection, message_id) { return new Promise((resolve, reject) => { connection.query( - `SELECT messages.id, messages.user_id, username, messages.content, messages.date, channels.name AS channel_name, (mentions.id IS NOT NULL) as has_mentions, (reply.id IS NOT NULL) as has_replies, (attachments.id IS NOT NULL) as has_attachments - FROM messages + `SELECT messages.id, user_id, username, content, date, channels.name AS channel_name, has_replies + FROM messages JOIN users ON messages.user_id = users.id JOIN channels ON messages.channel_id = channels.id - LEFT JOIN mentions ON messages.id = mentions.message_id - LEFT JOIN messages as reply ON messages.id = reply.reply_to_id - LEFT JOIN attachments ON messages.id = attachments.message_id - WHERE messages.id = ? - GROUP BY messages.id`, + WHERE messages.id = ?`, [message_id], (error, result) => { if (error) { @@ -386,16 +378,11 @@ function getMessage(connection, message_id) { function getLastMessages(connection) { return new Promise((resolve, reject) => { connection.query( - `SELECT messages.id, messages.user_id, username, messages.content, messages.date, channels.name AS channel_name, (mentions.id IS NOT NULL) as has_mentions, (reply.id IS NOT NULL) as has_replies, (attachments.id IS NOT NULL) as has_attachments - FROM messages + `SELECT messages.id, user_id, username, content, date, channels.name AS channel_name, has_replies + FROM messages JOIN users ON messages.user_id = users.id - JOIN channels ON messages.channel_id = channels.id - LEFT JOIN mentions ON messages.id = mentions.message_id - LEFT JOIN messages as reply ON messages.id = reply.reply_to_id - LEFT JOIN attachments ON messages.id = attachments.message_id - GROUP BY messages.id - ORDER BY date DESC - LIMIT 5`, + JOIN channels ON messages.channel_id = channels.id + ORDER BY date DESC LIMIT 5`, (error, result) => { if (error) { reject(new Error(error)); @@ -409,17 +396,12 @@ function getLastMessages(connection) { function getUserLastMessages(connection, username) { return new Promise((resolve, reject) => { connection.query( - `SELECT messages.id, messages.user_id, username, messages.content, messages.date, channels.name AS channel_name, (mentions.id IS NOT NULL) as has_mentions, (reply.id IS NOT NULL) as has_replies, (attachments.id IS NOT NULL) as has_attachments - FROM messages + `SELECT messages.id, user_id, username, content, date, channels.name AS channel_name, has_replies + FROM messages JOIN users ON messages.user_id = users.id JOIN channels ON messages.channel_id = channels.id - LEFT JOIN mentions ON messages.id = mentions.message_id - LEFT JOIN messages as reply ON messages.id = reply.reply_to_id - LEFT JOIN attachments ON messages.id = attachments.message_id WHERE username = ? - GROUP BY messages.id - ORDER BY date DESC - LIMIT 5`, + ORDER BY date DESC LIMIT 5`, [username], (error, result) => { if (error) { @@ -434,16 +416,11 @@ function getUserLastMessages(connection, username) { function getMessageReplies(connection, message_id) { return new Promise((resolve, reject) => { connection.query( - `SELECT messages.id, messages.user_id, username, messages.content, messages.date, channels.name AS channel_name, (mentions.id IS NOT NULL) as has_mentions, (reply.id IS NOT NULL) as has_replies, (attachments.id IS NOT NULL) as has_attachments - FROM messages + `SELECT messages.id, user_id, username, content, date, channels.name AS channel_name, has_replies + FROM messages JOIN users ON messages.user_id = users.id JOIN channels ON messages.channel_id = channels.id - LEFT JOIN mentions ON messages.id = mentions.message_id - LEFT JOIN messages as reply ON messages.id = reply.reply_to_id - LEFT JOIN attachments ON messages.id = attachments.message_id - WHERE messages.reply_to_id = ? - GROUP BY messages.id - ORDER BY date DESC`, + WHERE reply_to_id = ?`, [message_id], (error, result) => { if (error) { @@ -455,6 +432,21 @@ function getMessageReplies(connection, message_id) { }); } +function setHasReplies(connection, message_id, has_replies) { + return new Promise((resolve, reject) => { + connection.query( + `UPDATE messages SET has_replies = ? WHERE id = ?`, + [has_replies, message_id], + (error, result) => { + if (error) { + reject(new Error(error)); + } + resolve(result); + } + ); + }); +} + // +---------------------------+ // | Mentions | // +---------------------------+ @@ -584,54 +576,6 @@ function searchEmojis(connection, search) { }); } -// +---------------------------+ -// | Attachemnts | -// +---------------------------+ - -function addAttachment(connection, message_id, file_name) { - return new Promise((resolve, reject) => { - connection.query( - `INSERT INTO attachments (message_id, file_name) VALUES (?, ?)`, - [message_id, file_name], - (error, result) => { - if (error) { - reject(new Error(error)); - } - resolve(result); - } - ); - }); -} - -function deleteUnusedAttachments(connection) { - return new Promise((resolve, reject) => { - connection.query( - `DELETE FROM attachments WHERE message_id IS NULL`, - (error, result) => { - if (error) { - reject(new Error(error)); - } - resolve(result); - } - ); - }); -} - -function getMessageAttachments(connection, message_id) { - return new Promise((resolve, reject) => { - connection.query( - `SELECT * FROM attachments WHERE message_id = ?`, - [message_id], - (error, result) => { - if (error) { - reject(new Error(error)); - } - resolve(result); - } - ); - }); -} - module.exports = { getConnection, @@ -662,6 +606,7 @@ module.exports = { getUserLastMessages, getLastMessages, getMessageReplies, + setHasReplies, addMention, getMentions, diff --git a/front/src/pages/CreateEmoji.tsx b/front/src/pages/CreateEmoji.tsx index 9fdd062..fe0a678 100644 --- a/front/src/pages/CreateEmoji.tsx +++ b/front/src/pages/CreateEmoji.tsx @@ -64,7 +64,7 @@ export default function CreateEmoji() { value={name} onChange={(e) => setName(e.target.value)} /> - + diff --git a/front/src/pages/EditProfile.tsx b/front/src/pages/EditProfile.tsx index 85cc118..29d32c7 100644 --- a/front/src/pages/EditProfile.tsx +++ b/front/src/pages/EditProfile.tsx @@ -106,7 +106,7 @@ export default function EditProfile() {