Initial commit

This commit is contained in:
payacom
2026-07-07 17:50:26 +03:30
parent 525565d685
commit 64eb8c288f
25 changed files with 801 additions and 231 deletions

View File

@@ -303,6 +303,52 @@ app.post('/api/v1/chat/file', [blockCheck], async (req, res) => {
res.status(500).json({ error: 'Server error' })
}
})
app.delete('/api/v1/chat', [blockCheck], async (req, res) => {
try {
const userId = String(req.user._id)
const { messageIds } = req.body
if (!Array.isArray(messageIds) || messageIds.length === 0) {
return res.status(422).json({ message: 'پیامی انتخاب نشده است' })
}
const messages = await MessageModel.find({
_id: { $in: messageIds },
senderId: userId
})
if (!messages.length) {
return res.status(403).json({ message: 'فقط پیام‌های خودتان قابل حذف هستند' })
}
for (const msg of messages) {
if (msg.file) {
const relative = String(msg.file).replace(/^\//, '')
const filePath = path.join(__dirname, '../storage', relative)
if (fs.existsSync(filePath)) {
await fs.remove(filePath).catch(() => {})
}
}
}
const deletedIds = messages.map((m) => String(m._id))
await MessageModel.deleteMany({ _id: { $in: deletedIds } })
const receiverIds = [...new Set(messages.map((m) => String(m.receiverId)))]
receiverIds.forEach((receiverId) => {
io.to(`chat:${userId}:${receiverId}`)
.to(`chat:${receiverId}:${userId}`)
.emit('messagesDeleted', { messageIds: deletedIds, deletedBy: userId })
})
res.json({ deletedIds, message: 'پیام‌ها حذف شدند' })
} catch (error) {
console.error('Error deleting messages:', error)
res.status(500).json({ error: 'Server error' })
}
})
// Errors
require('./middlewares/exception')(app)
require('./middlewares/404')(app)