소스 검색

add last message

unknown 3 년 전
부모
커밋
a0bdddf366
4개의 변경된 파일41개의 추가작업 그리고 12개의 파일을 삭제
  1. 23 0
      controllers/chats.js
  2. 4 4
      controllers/messages.js
  3. BIN
      images/622b46a456535b47e86da8d5/clipart289625.png
  4. 14 8
      model/message.js

+ 23 - 0
controllers/chats.js

@@ -1,15 +1,38 @@
 const ChatModel = require('../model/chat');
 const UserModel = require('../model/user');
+const MessageModel = require('../model/message');
 
 const listChats = async (req, res, next) => {
 	try {
 		const userId = req.user.id;
 		const chats = await ChatModel.getList(userId, req.query);
+		const messages = await MessageModel.getLastMessagesList(userId);
+		const lastMessages = await messages.reduce(
+			(acc, { message, companionId }) => {
+				const obj = { message, companionId };
+				if (acc.length === 0) {
+					acc.push(obj);
+					return acc;
+				}
+				if (acc.some((el) => el.companionId === companionId)) {
+					const i = acc.findIndex((el) => {
+						return el.companionId === companionId;
+					});
+					acc[i] = obj;
+					return acc;
+				}
+				acc.push(obj);
+				return acc;
+			},
+			[]
+		);
+
 		return res.json({
 			status: 'success',
 			code: 200,
 			data: {
 				...chats,
+				lastMessages,
 			},
 		});
 	} catch (e) {

+ 4 - 4
controllers/messages.js

@@ -5,12 +5,12 @@ const ChatModel = require('../model/chat');
 const listMessages = async (req, res, next) => {
 	try {
 		const userId = req.user.id;
-		const chats = await MessageModel.getList(userId, req.query);
+		const messages = await MessageModel.getList(userId, req.query);
 		return res.json({
 			status: 'success',
 			code: 200,
 			data: {
-				...chats,
+				...messages,
 			},
 		});
 	} catch (e) {
@@ -22,11 +22,11 @@ const listMessagesById = async (req, res, next) => {
 	try {
 		const userId = req.user.id;
 		const companionId = req.params.companionId;
-		const chats = await MessageModel.getListById(companionId, userId);
+		const messages = await MessageModel.getListById(companionId, userId);
 		return res.json({
 			status: 'success',
 			code: 200,
-			data: [...chats],
+			data: [...messages],
 		});
 	} catch (e) {
 		next(e);

BIN
images/622b46a456535b47e86da8d5/clipart289625.png


+ 14 - 8
model/message.js

@@ -32,32 +32,37 @@ const getListById = async (companionId, userId) => {
 };
 
 const getById = async (id, userId) => {
-	const foundContact = await Message.findById({
+	const foundMessage = await Message.findById({
 		_id: id,
 		owner: userId,
 	});
-	return foundContact;
+	return foundMessage;
+};
+
+const getLastMessagesList = async (userId) => {
+	const messages = await Message.find({ owner: userId });
+	return messages;
 };
 
 const getByField = async (number, userId) => {
-	const contact = await Message.findOne({
+	const message = await Message.findOne({
 		number,
 		owner: userId,
 	});
-	return contact;
+	return message;
 };
 
 const add = async (obj) => {
-	const contact = await Message.create(obj);
-	return contact;
+	const message = await Message.create(obj);
+	return message;
 };
 
 const remove = async (id, userId) => {
-	const removedContact = await Message.findByIdAndRemove({
+	const removedMessage = await Message.findByIdAndRemove({
 		_id: id,
 		owner: userId,
 	});
-	return removedContact;
+	return removedMessage;
 };
 
 module.exports = {
@@ -65,6 +70,7 @@ module.exports = {
 	getListById,
 	getByField,
 	getById,
+	getLastMessagesList,
 	add,
 	remove,
 };