# frozen_string_literal: true class SlackService < ChatNotificationService include SlackMattermost::Notifier extend ::Gitlab::Utils::Override SUPPORTED_EVENTS_FOR_USAGE_LOG = %w[ push issue confidential_issue merge_request note confidential_note tag_push wiki_page deployment ].freeze prop_accessor EVENT_CHANNEL['alert'] def title 'Slack notifications' end def description 'Receive event notifications in Slack' end def self.to_param 'slack' end def default_channel_placeholder _('Slack channels (e.g. general, development)') end def webhook_placeholder 'https://hooks.slack.com/services/…' end def supported_events additional = [] additional << 'alert' super + additional end def get_message(object_kind, data) return ChatMessage::AlertMessage.new(data) if object_kind == 'alert' super end override :log_usage def log_usage(event, user_id) return unless user_id return unless SUPPORTED_EVENTS_FOR_USAGE_LOG.include?(event) key = "i_ecosystem_slack_service_#{event}_notification" Gitlab::UsageDataCounters::HLLRedisCounter.track_event(key, values: user_id) end end