Some checks failed
Lock Threads / action (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Publish Chatwoot EE docker images / build (linux/amd64, ubuntu-latest) (push) Has been cancelled
Publish Chatwoot EE docker images / build (linux/arm64, ubuntu-22.04-arm) (push) Has been cancelled
Publish Chatwoot EE docker images / merge (push) Has been cancelled
Publish Chatwoot CE docker images / build (linux/amd64, ubuntu-latest) (push) Has been cancelled
Publish Chatwoot CE docker images / build (linux/arm64, ubuntu-22.04-arm) (push) Has been cancelled
Publish Chatwoot CE docker images / merge (push) Has been cancelled
Run Chatwoot CE spec / lint-backend (push) Has been cancelled
Run Chatwoot CE spec / lint-frontend (push) Has been cancelled
Run Chatwoot CE spec / frontend-tests (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (0, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (1, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (10, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (11, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (12, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (13, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (14, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (15, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (2, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (3, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (4, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (5, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (6, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (7, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (8, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (9, 16) (push) Has been cancelled
Run Linux nightly installer / nightly (push) Has been cancelled
- Add Logistics component with progress tracking - Add OrderDetail component for order information - Support data-driven steps and actions - Add blue color scale to widget SCSS - Fix node overflow and progress bar rendering issues - Add English translations for dashboard components Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
40 lines
1.3 KiB
Ruby
40 lines
1.3 KiB
Ruby
class NotificationBuilder
|
|
pattr_initialize [:notification_type!, :user!, :account!, :primary_actor!, :secondary_actor]
|
|
|
|
def perform
|
|
build_notification
|
|
end
|
|
|
|
private
|
|
|
|
def current_user
|
|
Current.user
|
|
end
|
|
|
|
def user_subscribed_to_notification?
|
|
notification_setting = user.notification_settings.find_by(account_id: account.id)
|
|
# added for the case where an assignee might be removed from the account but remains in conversation
|
|
return false if notification_setting.blank?
|
|
|
|
return true if notification_setting.public_send("email_#{notification_type}?")
|
|
return true if notification_setting.public_send("push_#{notification_type}?")
|
|
|
|
false
|
|
end
|
|
|
|
def build_notification
|
|
# Create conversation_creation notification only if user is subscribed to it
|
|
return if notification_type == 'conversation_creation' && !user_subscribed_to_notification?
|
|
# skip notifications for blocked conversations except for user mentions
|
|
return if primary_actor.contact.blocked? && notification_type != 'conversation_mention'
|
|
|
|
user.notifications.create!(
|
|
notification_type: notification_type,
|
|
account: account,
|
|
primary_actor: primary_actor,
|
|
# secondary_actor is secondary_actor if present, else current_user
|
|
secondary_actor: secondary_actor || current_user
|
|
)
|
|
end
|
|
end
|