Browse Source

fix reply

unknown 1 year ago
parent
commit
09a35a120c
4 changed files with 99 additions and 17 deletions
  1. 10 0
      controllers/contacts.js
  2. 69 16
      controllers/messages.js
  3. 10 1
      controllers/user.js
  4. 10 0
      model/message.js

+ 10 - 0
controllers/contacts.js

@@ -96,12 +96,22 @@ const updateContact = async (req, res, next) => {
 	try {
 		const { id, _id, name, lastName, companionId } = req.body;
 		const userId = req.user.id;
+		const chat = await ChatModel.getByField(companionId, userId);
 		await ContactModel.update(id, userId, { name, lastName });
 		await ChatModel.update(_id, userId, { name, lastName });
 		await MessageModel.updateOwnerMessages(
 			{ companionId, companionIdFlow: { $ne: userId }, owner: userId },
 			{ name, lastName }
 		);
+		await MessageModel.updateOwnerMessages(
+			{
+				companionId,
+				replyName: { $eq: chat.name },
+				replyLastName: { $eq: chat.lastName },
+				owner: userId,
+			},
+			{ replyName: name, replyLastName: lastName }
+		);
 		return res.status(200).json({
 			data: {},
 		});

+ 69 - 16
controllers/messages.js

@@ -121,11 +121,40 @@ const removeMessage = async (req, res, next) => {
 		const id = req.params.id;
 		const userId = req.user.id;
 		const userMessage = await MessageModel.remove(id, userId);
+		await MessageModel.findByFieldsAndUpdateMany(
+			userMessage.companionId,
+			id,
+			userId,
+			{
+				replyMessage: null,
+				replyName: null,
+				replyLastName: null,
+				replyCaption: null,
+				oldId: null,
+			}
+		);
+		const companionMessage = await MessageModel.findByFields(
+			userId,
+			userMessage.idTime,
+			userMessage.companionId
+		);
 		await MessageModel.removeByFields(
 			userId,
 			userMessage.idTime,
 			userMessage.companionId
 		);
+		await MessageModel.findByFieldsAndUpdateMany(
+			userId,
+			companionMessage._id,
+			userMessage.companionId,
+			{
+				replyMessage: null,
+				replyName: null,
+				replyLastName: null,
+				replyCaption: null,
+				oldId: null,
+			}
+		);
 		if (userMessage.type !== 'text') {
 			const params = {
 				Bucket: AWS_BUCKET_NAME,
@@ -176,6 +205,30 @@ const removeSelected = async (req, res, next) => {
 		const totalDeleted = selectedArr.length;
 		const toDeleteMessage = async (id) => {
 			const userMessage = await MessageModel.remove(id, userId);
+			await MessageModel.findByFieldsAndUpdateMany(companionId, id, userId, {
+				replyMessage: null,
+				replyName: null,
+				replyLastName: null,
+				replyCaption: null,
+				oldId: null,
+			});
+			const companionMessage = await MessageModel.findByFields(
+				userId,
+				userMessage.idTime,
+				companionId
+			);
+			await MessageModel.findByFieldsAndUpdateMany(
+				userId,
+				companionMessage._id,
+				companionId,
+				{
+					replyMessage: null,
+					replyName: null,
+					replyLastName: null,
+					replyCaption: null,
+					oldId: null,
+				}
+			);
 			await MessageModel.removeByFields(
 				userId,
 				userMessage.idTime,
@@ -253,8 +306,8 @@ const sentMessage = async (req, res, next) => {
 			});
 			await MessageModel.add({
 				message,
-				name,
-				lastName,
+				name: isCompanionChat.name,
+				lastName: isCompanionChat.lastName,
 				avatarUrl,
 				color,
 				number,
@@ -301,7 +354,7 @@ const sentMessageReply = async (req, res, next) => {
 		const { id, message, caption } = req.body;
 		const idTime = Math.round(Date.now() / 1000);
 		const user = req.user;
-		const userId = req.user.id;
+		const userId = user.id;
 		const userMessage = await MessageModel.getById(id, userId);
 		const companionMessage = await MessageModel.findByFields(
 			userId,
@@ -336,18 +389,18 @@ const sentMessageReply = async (req, res, next) => {
 			});
 			await MessageModel.add({
 				message,
-				replyMessage: userMessage.message,
+				replyMessage: companionMessage.message,
 				name: isCompanionChat.name,
 				lastName: isCompanionChat.lastName,
-				replyName: userMessage.name,
-				replyLastName: userMessage.lastName,
+				replyName: companionMessage.name,
+				replyLastName: companionMessage.lastName,
 				avatarUrl: user.avatarUrl,
 				color: user.color,
 				number: user.number,
 				type: 'text',
-				fullType: userMessage.fullType,
+				fullType: companionMessage.fullType,
 				caption,
-				replyCaption: userMessage.caption,
+				replyCaption: companionMessage.caption,
 				idTime,
 				oldId: companionMessage._id,
 				companionIdFlow: userId,
@@ -426,8 +479,8 @@ const imageMessage = async (req, res, next) => {
 			});
 			await MessageModel.add({
 				message: imgUrl,
-				name,
-				lastName,
+				name: isCompanionChat.name,
+				lastName: isCompanionChat.lastName,
 				avatarUrl,
 				color,
 				number,
@@ -512,8 +565,8 @@ const audioMessage = async (req, res, next) => {
 			});
 			await MessageModel.add({
 				message: audioUrl,
-				name,
-				lastName,
+				name: isCompanionChat.name,
+				lastName: isCompanionChat.lastName,
 				avatarUrl,
 				color,
 				number,
@@ -583,8 +636,8 @@ const videoMessage = async (req, res, next) => {
 			const { name, lastName, avatarUrl, color, number } = req.user;
 			const newMessage = await MessageModel.add({
 				message: videoUrl,
-				name,
-				lastName,
+				name: isCompanionChat.name,
+				lastName: isCompanionChat.lastName,
 				avatarUrl,
 				color,
 				number,
@@ -697,8 +750,8 @@ const fileMessage = async (req, res, next) => {
 			});
 			await MessageModel.add({
 				message: fileUrl,
-				name,
-				lastName,
+				name: isCompanionChat.name,
+				lastName: isCompanionChat.lastName,
 				avatarUrl,
 				color,
 				number,

+ 10 - 1
controllers/user.js

@@ -139,7 +139,8 @@ const getCurrent = async (req, res, next) => {
 
 const updateCredentials = async (req, res, next) => {
 	try {
-		const { id, token } = req.user;
+		const user = req.user;
+		const { id, token } = user;
 		const { name, lastName, originalName, originalLastName } = req.body;
 		await UserModel.updateUser(id, req.body);
 		await ChatModel.updateCompanionsChat(id, {
@@ -150,6 +151,14 @@ const updateCredentials = async (req, res, next) => {
 			{ companionIdFlow: { $eq: id }, owner: id },
 			{ name, lastName }
 		);
+		await MessageModel.updateOwnerMessages(
+			{
+				replyName: { $eq: user.name },
+				replyLastName: { $eq: user.lastName },
+				owner: id,
+			},
+			{ replyName: name, replyLastName: lastName }
+		);
 		return res.status(200).json({
 			data: {
 				token,

+ 10 - 0
model/message.js

@@ -69,6 +69,15 @@ const findByFieldsAndUpdate = async (companionId, idTime, userId, body) => {
 	return message;
 };
 
+const findByFieldsAndUpdateMany = async (companionId, oldId, userId, body) => {
+	const messages = await Message.find({
+		companionId,
+		oldId,
+		owner: userId,
+	}).updateMany({ ...body });
+	return messages;
+};
+
 const findByFields = async (companionId, idTime, userId) => {
 	const message = await Message.findOne({
 		companionId,
@@ -112,6 +121,7 @@ module.exports = {
 	remove,
 	removeByFields,
 	findByFieldsAndUpdate,
+	findByFieldsAndUpdateMany,
 	findByFields,
 	removeAll,
 	updateCompanionsMessages,