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