Browse Source

add ability to unpinAll

unknown 1 year ago
parent
commit
5c4c2df439
3 changed files with 37 additions and 0 deletions
  1. 28 0
      controllers/messages.js
  2. 1 0
      routes/messages.js
  3. 8 0
      validation/message.js

+ 28 - 0
controllers/messages.js

@@ -89,6 +89,33 @@ const updateMessagePin = async (req, res, next) => {
 	}
 };
 
+const unpinAllMessage = async (req, res, next) => {
+	try {
+		const userId = req.user.id;
+		const pinnedMessages = req.body.pinnedMessages;
+		pinnedMessages.forEach(async (id) => {
+			const userMessage = await MessageModel.updateMessage(id, userId, {
+				pinned: false,
+			});
+			await MessageModel.findByFieldsAndUpdate(
+				userId,
+				userMessage.idTime,
+				userMessage.companionId,
+				{
+					pinned: false,
+				}
+			);
+		});
+		return res.status(200).json({
+			status: 'success',
+			code: 200,
+			data: {},
+		});
+	} catch (e) {
+		next(e);
+	}
+};
+
 const removeMessage = async (req, res, next) => {
 	try {
 		const id = req.params.id;
@@ -631,6 +658,7 @@ module.exports = {
 	removeSelected,
 	updateMessageEmoji,
 	updateMessagePin,
+	unpinAllMessage,
 	listMessagesById,
 	sentMessage,
 	imageMessage,

+ 1 - 0
routes/messages.js

@@ -14,6 +14,7 @@ router
 		validation.removeSelected,
 		controllers.removeSelected
 	)
+	.patch('/unpin/all/', guard, validation.unpinAll, controllers.unpinAllMessage)
 	.post(
 		'/image/:companionIdAndCaption',
 		[guard, upload.uploadImage.single('image'), validation.validateUploadFile],

+ 8 - 0
validation/message.js

@@ -13,6 +13,10 @@ const schemaRemoveSelected = Joi.object({
 	selectedArr: Joi.array().items(Joi.string().min(5).max(50)).required(),
 });
 
+const schemaUnpinAll = Joi.object({
+	pinnedMessages: Joi.array().items(Joi.string().min(5).max(50)).required(),
+});
+
 module.exports.sentMessage = (req, _res, next) => {
 	return validate(schemaSentMessage, req.body, next);
 };
@@ -21,6 +25,10 @@ module.exports.removeSelected = (req, _res, next) => {
 	return validate(schemaRemoveSelected, req.body, next);
 };
 
+module.exports.unpinAll = (req, _res, next) => {
+	return validate(schemaUnpinAll, req.body, next);
+};
+
 module.exports.validateUploadFile = (req, res, next) => {
 	if (!req.file)
 		return res.status(400).json({