Initial commit
This commit is contained in:
46
index.js
46
index.js
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user