818c769bb7
* Changes for the message to have multiple attachments * changed the message association to attachments from has_one to has_many * changed all the references of this association in building and fetching to reflect this change * Added number of attachments validation to the message model * Modified the backend responses and endpoints to reflect multiple attachment support (#737) * Changing the frontend components for multiple attachments * changed the request structure to reflect the multiple attachment structures * changed the message bubbles to support multiple attachments * bugfix: agent side attachment was not showing because of a missing await * broken message was shown because of the store filtering * Added documentation for ImageMagick * spec fixes * refactored code to reflect more apt namings * Added updated message listener for the dashboard (#727) * Added the publishing for message updated event * Implemented the listener for dashboard Co-authored-by: Pranav Raj Sreepuram <pranavrajs@gmail.com>
47 lines
1.2 KiB
Ruby
47 lines
1.2 KiB
Ruby
class Messages::Outgoing::NormalBuilder
|
|
include ::FileTypeHelper
|
|
attr_reader :message
|
|
|
|
def initialize(user, conversation, params)
|
|
@content = params[:content]
|
|
@private = params[:private] || false
|
|
@conversation = conversation
|
|
@user = user
|
|
@fb_id = params[:fb_id]
|
|
@content_type = params[:content_type]
|
|
@items = params.to_unsafe_h&.dig(:content_attributes, :items)
|
|
@attachments = params[:attachments]
|
|
end
|
|
|
|
def perform
|
|
@message = @conversation.messages.build(message_params)
|
|
@message.save
|
|
if @attachments.present?
|
|
@attachments.each do |uploaded_attachment|
|
|
attachment = @message.attachments.new(
|
|
account_id: @message.account_id,
|
|
file_type: file_type(uploaded_attachment&.content_type)
|
|
)
|
|
attachment.file.attach(uploaded_attachment)
|
|
end
|
|
@message.save
|
|
end
|
|
@message
|
|
end
|
|
|
|
private
|
|
|
|
def message_params
|
|
{
|
|
account_id: @conversation.account_id,
|
|
inbox_id: @conversation.inbox_id,
|
|
message_type: :outgoing,
|
|
content: @content,
|
|
private: @private,
|
|
user_id: @user&.id,
|
|
source_id: @fb_id,
|
|
content_type: @content_type,
|
|
items: @items
|
|
}
|
|
end
|
|
end
|