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 }