2024-08-20 08:33:52 +00:00

36 lines
935 B
JavaScript

import { ChatMessage } from "@db_models"
export default async (socket, payload, engine) => {
if (!socket.userData) {
throw new OperationError(401, "Unauthorized")
}
const created_at = new Date().getTime()
const [from_user_id, to_user_id] = [socket.userData._id, payload.to_user_id]
const wsMessageObj = {
...payload,
created_at: created_at,
user: socket.userData,
_id: `msg:${from_user_id}:${created_at}`,
}
const doc = await ChatMessage.create({
type: "user",
from_user_id: from_user_id,
to_user_id: to_user_id,
content: payload.content,
created_at: created_at,
})
socket.emit("chat:receive:message", wsMessageObj)
const targetSocket = await engine.find.socketByUserId(payload.to_user_id)
if (targetSocket) {
await targetSocket.emit("chat:receive:message", wsMessageObj)
}
return doc
}