This commit is contained in:
payacom
2026-10-02 18:13:34 +03:30
parent d4ebc20aa8
commit fade8543e2
9 changed files with 180 additions and 63 deletions

View File

@@ -1,4 +1,8 @@
const express = require('express')
const path = require('path')
const fs = require('fs')
const crypto = require('crypto')
const multer = require('multer')
const {
listRooms,
createRoom,
@@ -15,6 +19,23 @@ const requireSubUserPermission = require('../../../middlewares/requireSubUserPer
const router = express.Router()
// همون دلیلِ /api/v1/chat/file توی index.js: این روت قبلاً به‌جای multer به
// express-form-data (که بعداً global حذف شد) تکیه داشت، پس req.files همیشه
// undefined بود و هر ارسالِ فایل/عکس/ویس/ویدیو توی چتِ روم هم شکست می‌خورد
const roomMessageUploadDir = path.join(__dirname, '../../../storage/chat-rooms/messages')
if (!fs.existsSync(roomMessageUploadDir)) {
fs.mkdirSync(roomMessageUploadDir, { recursive: true })
}
const roomMessageUpload = multer({
storage: multer.diskStorage({
destination: (req, file, cb) => cb(null, roomMessageUploadDir),
filename: (req, file, cb) => {
cb(null, `${Date.now()}-${crypto.randomUUID()}${path.extname(file.originalname || '')}`)
}
}),
limits: { fileSize: 200 * 1024 * 1024 }
}).single('file')
router.get('/', listRooms)
router.post('/', createRoom)
router.get('/:roomId', getRoomDetail)
@@ -23,7 +44,7 @@ router.post('/:roomId/members', addRoomMembers)
router.get('/:roomId/e2ee-keys', getRoomE2eeKeys)
router.put('/:roomId/e2ee-keys', putRoomE2eeKeys)
router.get('/:roomId/messages', getRoomMessages)
router.post('/:roomId/messages', requireSubUserPermission('reply_dm'), sendRoomMessage)
router.post('/:roomId/messages', roomMessageUpload, requireSubUserPermission('reply_dm'), sendRoomMessage)
router.post('/:roomId/messages/reaction', reactToRoomMessage)
module.exports = router