Files
modstagram-back/utils/storyChatMessage.js
payacom 3f416a7a60 full
2026-08-31 20:45:41 +03:30

71 lines
1.8 KiB
JavaScript

const MessageModel = require('../models/MessageModel')
const UserModel = require('../models/UserModel')
const { enrichMessage, emitChatEvents } = require('../helpers/chatHelpers')
const { viewerIsBlockedBy } = require('./blockVisibility')
function storyMediaUrl (storagePath) {
if (!storagePath) return ''
const normalized = storagePath.replace(/\\/g, '/')
const idx = normalized.indexOf('/storage/')
if (idx >= 0) return normalized.slice(idx)
return normalized.replace('/root/modstagram-back/storage', '/storage')
}
async function sendStoryReactionMessage ({
io,
senderId,
receiverId,
story,
owner,
reactionType,
commentText
}) {
if (!senderId || !receiverId || !story) return false
if (String(senderId) === String(receiverId)) return false
const receiver = await UserModel.findById(receiverId)
.select('blocked_users')
.lean()
if (!receiver) return false
if (viewerIsBlockedBy(receiver, senderId)) return false
if (owner && viewerIsBlockedBy(owner, senderId)) return false
const sharedStory = {
storyId: String(story._id),
mediaType: story.media_type,
preview: storyMediaUrl(story.media_path),
ownerUserName: owner?.user_name || '',
ownerDisplayName:
`${owner?.first_name || ''} ${owner?.last_name || ''}`.trim() ||
owner?.user_name ||
'کاربر',
reactionType
}
const suffix =
reactionType === 'like'
? '❤️'
: (commentText || '').trim()
const content = `${JSON.stringify({ sharedStory })}\n${suffix}`
const newMessage = new MessageModel({
senderId,
receiverId,
content
})
await newMessage.save()
if (io) {
const formatted = await enrichMessage(newMessage)
emitChatEvents(io, formatted, senderId, receiverId)
}
return true
}
module.exports = {
sendStoryReactionMessage,
storyMediaUrl
}