chore: rename service

This commit is contained in:
Muhsin Keloth
2025-04-10 10:52:36 +05:30
parent 5f09fbe200
commit ff3d5ee564
+21 -32
View File
@@ -1,66 +1,55 @@
class Conversations::CanReplyService
DEFAULT_MESSAGING_WINDOW = 24
EXTENDED_MESSAGING_WINDOW = 7.days
INSTAGRAM_MESSENGER_TYPE = 'instagram_direct_message'
def initialize(conversation)
@conversation = conversation
end
def can_reply?
return false if last_incoming_message.nil?
channel = @conversation.inbox&.channel
return can_reply_on_instagram_via_messenger? if instagram_via_messenger?
return can_reply_on_instagram? if @conversation.inbox.instagram_direct?
return true unless channel&.messaging_window_enabled?
case channel_type
when :instagram_messenger
can_reply_on_instagram_via_messenger?
when :instagram_direct
can_reply_on_instagram?
else
last_message_in_messaging_window?(messaging_window)
end
last_message_in_messaging_window?(messaging_window)
end
private
def channel_type
return :instagram_messenger if instagram_via_messenger?
return :instagram_direct if @conversation.inbox.instagram_direct?
:other
end
def messaging_window
return DEFAULT_MESSAGING_WINDOW unless @conversation.inbox.api?
window = @conversation.inbox.channel.additional_attributes['agent_reply_time_window'].to_i
window.positive? ? window : DEFAULT_MESSAGING_WINDOW
@conversation.inbox.api? ? @conversation.inbox.channel.additional_attributes['agent_reply_time_window'].to_i : 24
end
def last_message_in_messaging_window?(time)
return false if last_incoming_message.nil?
Time.current < last_incoming_message.created_at + time.hours
end
def instagram_via_messenger?
@conversation.additional_attributes['type'] == INSTAGRAM_MESSENGER_TYPE
@conversation.additional_attributes['type'] == 'instagram_direct_message'
end
def can_reply_on_instagram_via_messenger?
global_config = GlobalConfig.get('ENABLE_MESSENGER_CHANNEL_HUMAN_AGENT')
extended_window_enabled?(global_config['ENABLE_MESSENGER_CHANNEL_HUMAN_AGENT'])
return false if last_incoming_message.nil?
if global_config['ENABLE_MESSENGER_CHANNEL_HUMAN_AGENT']
Time.current < last_incoming_message.created_at + 7.days
else
last_message_in_messaging_window?(24)
end
end
def can_reply_on_instagram?
global_config = GlobalConfig.get('ENABLE_INSTAGRAM_CHANNEL_HUMAN_AGENT')
extended_window_enabled?(global_config['ENABLE_INSTAGRAM_CHANNEL_HUMAN_AGENT'])
end
def extended_window_enabled?(enabled)
if enabled
Time.current < last_incoming_message.created_at + EXTENDED_MESSAGING_WINDOW
return false if last_incoming_message.nil?
if global_config['ENABLE_INSTAGRAM_CHANNEL_HUMAN_AGENT']
Time.current < last_incoming_message.created_at + 7.days
else
last_message_in_messaging_window?(DEFAULT_MESSAGING_WINDOW)
last_message_in_messaging_window?(24)
end
end