// tidak dipakai saat ini, yang ngatur chat ada di socketio.js
//
// import { Router } from "express";
// import cloudinary from "../config/cloudinary.js";
// import Message from "../models/message.js";
// import multer from "multer";
// import passport from "passport";
// import mongoose from 'mongoose';
//
// const router = Router();
// router.use(passport.authenticate("jwt", { session: false }));
//
// const fileFilter = (req, file, cb) => {
//   if (
//     file.mimetype.startsWith("image/") ||
//     file.mimetype.startsWith("video/")
//   ) {
//     cb(null, true);
//   } else {
//     cb(new Error("Only image and video files are allowed!"), false);
//   }
// };
// const upload = multer({
//   storage: multer.memoryStorage(),
//   fileFilter,
// });
//
// // Handle sending a message (with or without media)
// router.post("/send-message", async (req, res) => {
//   try {
//     const { senderId, receiverId, message, mediaUrl } = req.body;
//     const senderObjectId = mongoose.Types.ObjectId(senderId);
//     const receiverObjectId = mongoose.Types.ObjectId(receiverId);
//     const newMessage = new Message({
//       senderId: senderObjectId,
//       receiverId: receiverObjectId,
//       message,
//       mediaUrl,
//     });
//     await newMessage.save();
//     res.status(201).json(newMessage);
//   } catch (error) {
//     res.status(500).json({ error: error.message });
//   }
// });
//
// router.put("/mark-read/:id", async (req, res) => {
//   try {
//     const message = await Message.findByIdAndUpdate(
//       req.params.id,
//       { isRead: true },
//       { new: true },
//     );
//     if (!message) return res.status(404).json({ error: "Message not found" });
//     res.json(message);
//   } catch (error) {
//     res.status(500).json({ error: error.message });
//   }
// });
//
// router.delete("/delete-message/:id", async (req, res) => {
//   try {
//     const message = await Message.findByIdAndDelete(req.params.id);
//     if (!message) return res.status(404).json({ error: "Message not found" });
//     res.json({ message: "Message deleted successfully" });
//   } catch (error) {
//     res.status(500).json({ error: error.message });
//   }
// });
//
// router.get("/messages/:user1/:user2", async (req, res) => {
//   const { user1, user2 } = req.params;
//   try {
//     const messages = await Message.find({
//       $or: [
//         { senderId: user1, receiverId: user2 },
//         { senderId: user2, receiverId: user1 },
//       ],
//     }).sort({ timestamp: -1 });
//
//     res.json(messages);
//   } catch (err) {
//     res.status(500).json({ error: "Error retrieving messages" });
//   }
// });
//
// // Handle file upload (Cloudinary)
// // router.post("/upload-image", upload.single("file"), async (req, res) => {
// //   try {
// //     if (!req.file) return res.status(400).json({ error: "No file uploaded" });
// //
// //     const upload_stream = cloudinary.uploader.upload_stream(
// //       {
// //         folder: "chat_images", // optional: separate chat uploads folder in Cloudinary
// //         format: "webp", // optional: convert to webp
// //       },
// //       async (error, result) => {
// //         if (error) throw error;
// //
// //         res.status(200).json({ url: result.secure_url });
// //       },
// //     );
// //
// //     upload_stream.end(req.file.buffer);
// //   } catch (error) {
// //     res.status(500).json({ error: error.message });
// //   }
// // });
//
// // Route to get message history
// // router.get("/messages/:user1/:user2", getMessages);
//
// export default router;
