import connectDB from '@/config/database'; import Message from '@/models/Message'; import '@/models/Property'; import { convertToSerializeableObject } from '@/utils/convertToObject'; import { getSessionUser } from '@/utils/getSessionUser'; const MessagePage = async () => { await connectDB(); const sessionUser = await getSessionUser(); const { userId } = sessionUser; const readMessages = await Message.find({ recipient: userId, read: true }) .sort({ createdAt: -1 }) // Sort read messages in asc order .populate('sender', 'username') .populate('property', 'name') .lean(); const unreadMessages = await Message.find({ recipient: userId, read: false, }) .sort({ createdAt: -1 }) // Sort read messages in asc order .populate('sender', 'username') .populate('property', 'name') .lean(); // Convert to serializable object so we can pass to client component. const messages = [...unreadMessages, ...readMessages].map((messageDoc) => { const message = convertToSerializeableObject(messageDoc); message.sender = convertToSerializeableObject(messageDoc.sender); message.property = convertToSerializeableObject(messageDoc.property); return message; }); return (

Your Messages

{messages.length === 0 ? (

You have no messages

) : ( messages.map((message) => (

{message.name}

)) )}
); }; export default MessagePage;