Commit 5e664de7 authored by Balasuriya D.A.M.'s avatar Balasuriya D.A.M.

Create Chat API

parent 958a4a31
const asyncHandler = require("express-async-handler");
const Chat = require("../models/chatModel");
const User = require("../models/userModel");
const accessChat = asyncHandler(async (req, res) => {
//creating and fetching one to one chat
const { userId } = req.body;
if (!userId) {
console.log("UserId param not sent with request");
return res.sendStatus(400);
}
var isChat = await Chat.find({
isGroupChat: false,
$and: [
{ users: { $elemMatch: { $eq: req.user._id } } },
{ users: { $elemMatch: { $eq: userId } } },
],
}).populate("users", "-password")
.populate("latestMessage");
isChat = await User.populate(isChat, {
path: "latestMessage.sender",
select: "name pic email",
});
if (isChat.length > 0) {
res.send(isChat[0]);
} else {
var chatData = {
chatName: "sender",
isGroupChat: false,
users: [req.user._id, userId],
};
try {
const createdChat = await Chat.create(chatData);
const FullChat = await Chat.findOne({ _id: createdChat._id }).populate(
"users",
"-password"
);
res.status(200).send(FullChat);
} catch (error) {
res.status(400);
throw new Error(error.message);
}
}
});
module.exports = { accessChat };
\ No newline at end of file
const express = require("express");
const { accessChat } = require("../controllers/chatControllers");
const { protect } = require("../middleware/authMiddleware");
//create router object
const router = express.Router();
//only login user can access this route.
//router.route("/").post(protect, accessChat);
router.route("/").post(protect, accessChat);
//router.route("/").get(protect, fetchChats);
//router.route("/group").post(protect, createGroupChat); //create group
//router.route("/rename").put(protect, renameGroup); //update group
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment