25 lines
676 B
Ruby
25 lines
676 B
Ruby
|
|
class Inboxes::FetchImapEmailInboxesJob < ApplicationJob
|
||
|
|
queue_as :scheduled_jobs
|
||
|
|
include BillingHelper
|
||
|
|
|
||
|
|
def perform
|
||
|
|
email_inboxes = Inbox.where(channel_type: 'Channel::Email')
|
||
|
|
email_inboxes.find_each(batch_size: 100) do |inbox|
|
||
|
|
::Inboxes::FetchImapEmailsJob.perform_later(inbox.channel) if should_fetch_emails?(inbox)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
private
|
||
|
|
|
||
|
|
def should_fetch_emails?(inbox)
|
||
|
|
return false if inbox.account.suspended?
|
||
|
|
return false unless inbox.channel.imap_enabled
|
||
|
|
return false if inbox.channel.reauthorization_required?
|
||
|
|
|
||
|
|
return true unless ChatwootApp.chatwoot_cloud?
|
||
|
|
return false if default_plan?(inbox.account)
|
||
|
|
|
||
|
|
true
|
||
|
|
end
|
||
|
|
end
|