From c18527013258d63980d30ecfb7709b0210d204ee Mon Sep 17 00:00:00 2001
From: Moreau Elise <moreau.elise13@gmail.com>
Date: Fri, 9 Apr 2021 16:23:21 +0200
Subject: [PATCH] [api][rooms routes] code typo + use newroom variable instead
 of room to avoid bug at room creation

---
 api/routes/rooms_routes.js | 32 +++++++++++++++++++-------------
 1 file changed, 19 insertions(+), 13 deletions(-)

diff --git a/api/routes/rooms_routes.js b/api/routes/rooms_routes.js
index 98dae16b6..f196787a5 100644
--- a/api/routes/rooms_routes.js
+++ b/api/routes/rooms_routes.js
@@ -26,7 +26,7 @@ router.post('/', validator.body(roomSchema), async function(req, res, next){
     
     if (!currentUser){
         return res.status(401).json({
-            'error': 'User does\'nt exist.'
+            'error': 'User doesn\'t exist.'
         });
     }
 
@@ -45,14 +45,15 @@ router.post('/', validator.body(roomSchema), async function(req, res, next){
     
     res.json(newRoom);
     
-})
+    emit('new-room', newRoom, newRoom.users);
+});
 
 // Liste des room contenant l'utilisateur courant
 // Pas de room publique
 router.get('/', async function (req, res, next){
     let room = null;
     try {
-        room =  await Room.find({users: req.user.id}).populate('users');
+        room =  await Room.find({ users: req.user.id }).populate('users');
     } catch(err) {
         return next(err);
     }
@@ -64,29 +65,34 @@ router.get('/', async function (req, res, next){
     }
     
     return res.json(room);
-})
+});
 
 // Récupère les messages d'une room
 router.get('/:id/messages', async function (req, res, next) {
     let room = null;
 
     try {
+        room = await Room.findOne({ _id: req.params.id, users: req.user.id });
         room = await Room.findById(req.params.id);
     } catch (err){
         return next(err);
     }
 
-    if (!room) return res.status(404).json({error: 'Room not found'});
+    if (!room) return res.status(404).json({ error: 'Room not found' });
 
     let messages = null;
     try {
+        messages = await Message.find({ room: room._id })
+            .populate('author')
+            .sort({ date: -1 })
+            .limit(50);
         messages = await Message.find({room: room._id}).sort({ date: -1 }).limit(50);
     } catch(err) {
         return next(err);
     }
 
     return res.json(messages);
-})
+});
 
 // Récupération de liste des utilisateurs d'une room dans laquelle est l'utilisateur courant
 router.get('/:id/users', async function(req, res, next){
@@ -104,7 +110,7 @@ router.get('/:id/users', async function(req, res, next){
     }
     
     return res.json(room.users);
-})
+});
 
 //Suppression d'une room
 router.delete('/:id', async function(req, res, next){
@@ -116,7 +122,7 @@ router.delete('/:id', async function(req, res, next){
     }
 
     res.status(204).end();
-})
+});
 
 const roomSchemaPut = Joi.object({
     name: Joi.string().required().trim().min(1),
@@ -143,11 +149,11 @@ router.put('/:id', validator.body(roomSchemaPut), async function(req, res, next)
     if (!room) return res.status(404).json({error: 'Room not found'});
 
     return res.json(room);
-})
+});
 
 const roomSchemaUsers = Joi.object({
     ids: Joi.array().items(Joi.string()).required()
-})
+});
 
 //Ajouter un ou plusieurs utilisateurs dans une room
 router.post('/:id/add_users', validator.body(roomSchemaUsers), async function(req, res, next){
@@ -179,7 +185,7 @@ router.post('/:id/add_users', validator.body(roomSchemaUsers), async function(re
     room.save();
 
     return res.json(room);
-})
+});
 
 //Supprimer des utilisateurs d'une room (excepté le créateur de celle ci)
 router.post('/:id/remove_users', validator.body(roomSchemaUsers), async function(req, res, next){
@@ -197,12 +203,12 @@ router.post('/:id/remove_users', validator.body(roomSchemaUsers), async function
     }
     let ids = req.body.ids;
     // On ne peut pas supprimer le créateur de la room de celle-ci
-    ids = ids.filter(id => id !== room.createdBy.toString())
+    ids = ids.filter(id => id !== room.createdBy.toString());
 
     room.users.pull(...ids);
     room.save();
 
     return res.json(room);
-})
+});
 
 export default router;
-- 
GitLab