41 lines
1.1 KiB
Ruby
41 lines
1.1 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
# Concern handling functionality around deciding whether to send notification
|
|
# for activities on a specified branch or not. Will be included in
|
|
# Integrations::BaseChatNotification and PipelinesEmailService classes.
|
|
module NotificationBranchSelection
|
|
extend ActiveSupport::Concern
|
|
|
|
def branch_choices
|
|
[
|
|
[_('All branches'), 'all'].freeze,
|
|
[_('Default branch'), 'default'].freeze,
|
|
[_('Protected branches'), 'protected'].freeze,
|
|
[_('Default branch and protected branches'), 'default_and_protected'].freeze
|
|
].freeze
|
|
end
|
|
|
|
def notify_for_branch?(data)
|
|
ref = if data[:ref]
|
|
Gitlab::Git.ref_name(data[:ref])
|
|
else
|
|
data.dig(:object_attributes, :ref)
|
|
end
|
|
|
|
is_default_branch = ref == project.default_branch
|
|
is_protected_branch = ProtectedBranch.protected?(project, ref)
|
|
|
|
case branches_to_be_notified
|
|
when "all"
|
|
true
|
|
when "default"
|
|
is_default_branch
|
|
when "protected"
|
|
is_protected_branch
|
|
when "default_and_protected"
|
|
is_default_branch || is_protected_branch
|
|
else
|
|
false
|
|
end
|
|
end
|
|
end
|