Commit e396f0ba authored by Kamil Trzciński's avatar Kamil Trzciński

Merge branch 'ce-10609-system-notes-scoped-labels' into 'master'

Port of "Create system notes for scoped labels"

See merge request gitlab-org/gitlab-ce!30250
parents ee3fc6d6 4d02fb67
...@@ -62,19 +62,27 @@ class LabelNote < Note ...@@ -62,19 +62,27 @@ class LabelNote < Note
end end
def note_text(html: false) def note_text(html: false)
added = labels_str('added', label_refs_by_action('add', html)) added = labels_str(label_refs_by_action('add', html), prefix: 'added', suffix: added_suffix)
removed = labels_str('removed', label_refs_by_action('remove', html)) removed = labels_str(label_refs_by_action('remove', html), prefix: removed_prefix)
[added, removed].compact.join(' and ') [added, removed].compact.join(' and ')
end end
def removed_prefix
'removed'
end
def added_suffix
''
end
# returns string containing added/removed labels including # returns string containing added/removed labels including
# count of deleted labels: # count of deleted labels:
# #
# added ~1 ~2 + 1 deleted label # added ~1 ~2 + 1 deleted label
# added 3 deleted labels # added 3 deleted labels
# added ~1 ~2 labels # added ~1 ~2 labels
def labels_str(prefix, label_refs) def labels_str(label_refs, prefix: '', suffix: '')
existing_refs = label_refs.select { |ref| ref.present? }.sort existing_refs = label_refs.select { |ref| ref.present? }.sort
refs_str = existing_refs.empty? ? nil : existing_refs.join(' ') refs_str = existing_refs.empty? ? nil : existing_refs.join(' ')
...@@ -84,9 +92,9 @@ class LabelNote < Note ...@@ -84,9 +92,9 @@ class LabelNote < Note
return unless refs_str || deleted_str return unless refs_str || deleted_str
label_list_str = [refs_str, deleted_str].compact.join(' + ') label_list_str = [refs_str, deleted_str].compact.join(' + ')
suffix = 'label'.pluralize(deleted > 0 ? deleted : existing_refs.count) suffix += ' label'.pluralize(deleted > 0 ? deleted : existing_refs.count)
"#{prefix} #{label_list_str} #{suffix}" "#{prefix} #{label_list_str} #{suffix.squish}"
end end
def label_refs_by_action(action, html) def label_refs_by_action(action, html)
......
...@@ -36,10 +36,9 @@ class ResourceLabelEvent < ApplicationRecord ...@@ -36,10 +36,9 @@ class ResourceLabelEvent < ApplicationRecord
issue || merge_request issue || merge_request
end end
# create same discussion id for all actions with the same user and time
def discussion_id(resource = nil) def discussion_id(resource = nil)
strong_memoize(:discussion_id) do strong_memoize(:discussion_id) do
Digest::SHA1.hexdigest([self.class.name, created_at, user_id].join("-")) Digest::SHA1.hexdigest(discussion_id_key.join("-"))
end end
end end
...@@ -121,4 +120,8 @@ class ResourceLabelEvent < ApplicationRecord ...@@ -121,4 +120,8 @@ class ResourceLabelEvent < ApplicationRecord
def resource_parent def resource_parent
issuable.project || issuable.group issuable.project || issuable.group
end end
def discussion_id_key
[self.class.name, created_at, user_id]
end
end end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment