From 9260706d7b3488593df8c842eb103cc589c7ec72 Mon Sep 17 00:00:00 2001 From: Peter Leitzen Date: Mon, 2 Sep 2019 13:25:15 +0000 Subject: Reduce amount of property definitions in ChatNotificationService Before this commit we redefined properties for supported events on each new instance of ChatNotificationService during "runtime". This commit defines the properties only once during "compile time". --- .../project_services/chat_notification_service.rb | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/app/models/project_services/chat_notification_service.rb b/app/models/project_services/chat_notification_service.rb index 7c9ecc6b821..cb75c89136e 100644 --- a/app/models/project_services/chat_notification_service.rb +++ b/app/models/project_services/chat_notification_service.rb @@ -5,17 +5,25 @@ class ChatNotificationService < Service include ChatMessage + SUPPORTED_EVENTS = %w[ + push issue confidential_issue merge_request note confidential_note + tag_push pipeline wiki_page deployment + ].freeze + + EVENT_CHANNEL = proc { |event| "#{event}_channel" } + default_value_for :category, 'chat' prop_accessor :webhook, :username, :channel + + # Custom serialized properties initialization + prop_accessor(*SUPPORTED_EVENTS.map { |event| EVENT_CHANNEL[event] }) + boolean_accessor :notify_only_broken_pipelines, :notify_only_default_branch validates :webhook, presence: true, public_url: true, if: :activated? def initialize_properties - # Custom serialized properties initialization - self.supported_events.each { |event| self.class.prop_accessor(event_channel_name(event)) } - if properties.nil? self.properties = {} self.notify_only_broken_pipelines = true @@ -32,8 +40,7 @@ class ChatNotificationService < Service end def self.supported_events - %w[push issue confidential_issue merge_request note confidential_note tag_push - pipeline wiki_page deployment] + SUPPORTED_EVENTS end def fields @@ -139,7 +146,7 @@ class ChatNotificationService < Service end def event_channel_name(event) - "#{event}_channel" + EVENT_CHANNEL[event] end def project_name -- cgit v1.2.1