docbrown/app/helpers/messages_helper.rb
Sarthak Sharma f088a672de
[deploy] 🚀Feature: chat action messages if a member added, left or removed from the group (#7105)
* Feature 🚀 : Ability to delete messages in chat channels

- Sending message ID to frontend
- Deleting Message
- Use pusher to delete message realtime

* Minor Bug 🐞: Show message action only for current user

- User can delete or edit their own messages

* Test cases added

* Bug 🐞: Update message id for receiver

Message id was not sent to receiver by pusher

* Refactoring🛠: Message controller refactoring

* Test Cases📝 : Specs for Delete message added

* Feature 🚀 : Ability to edit messages

* Test Cases📝 : Specs for Edit message added

* added chat action field and backend logic

* 🚀Action Messages: Someone Joins | Leaves | Removed

* chat action messages made realtion

* remove redundancy, message helper added

* 🛠  Style of action message changed

* 🔩 Specs added

Co-authored-by: Parasgr-code <paras.gaur@skynox.tech>
2020-04-08 18:14:34 -04:00

41 lines
1.4 KiB
Ruby

module MessagesHelper
def create_pusher_payload(new_message, temp_id)
payload = {
temp_id: temp_id,
id: new_message.id,
user_id: new_message.user.id,
chat_channel_id: new_message.chat_channel.id,
chat_channel_adjusted_slug: new_message.chat_channel.adjusted_slug(current_user, "sender"),
channel_type: new_message.chat_channel.channel_type,
username: new_message.user.username,
profile_image_url: ProfileImage.new(new_message.user).get(width: 90),
message: new_message.message_html,
markdown: new_message.message_markdown,
edited_at: new_message.edited_at,
timestamp: Time.current,
color: new_message.preferred_user_color,
reception_method: "pushed",
action: new_message.chat_action
}
if new_message.chat_channel.group?
payload[:chat_channel_adjusted_slug] = new_message.chat_channel.adjusted_slug
end
payload.to_json
end
def pusher_message_created(is_single, message, temp_message_id)
return unless message.valid?
begin
message_json = create_pusher_payload(message, temp_message_id)
if is_single
Pusher.trigger("private-message-notifications-#{message.user_id}", "message-created", message_json)
else
Pusher.trigger(message.chat_channel.pusher_channels, "message-created", message_json)
end
rescue Pusher::Error => e
logger.info "PUSHER ERROR: #{e.message}"
end
end
end