summaryrefslogtreecommitdiff
path: root/app/services/issuable_base_service.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/services/issuable_base_service.rb')
-rw-r--r--app/services/issuable_base_service.rb14
1 files changed, 14 insertions, 0 deletions
diff --git a/app/services/issuable_base_service.rb b/app/services/issuable_base_service.rb
index a63c54df4a6..03115416607 100644
--- a/app/services/issuable_base_service.rb
+++ b/app/services/issuable_base_service.rb
@@ -525,6 +525,10 @@ class IssuableBaseService < ::BaseProjectService
attrs_changed || labels_changed || assignees_changed || reviewers_changed
end
+ def has_label_changes?(issuable, old_labels)
+ Set.new(issuable.labels) != Set.new(old_labels)
+ end
+
def invalidate_cache_counts(issuable, users: [])
users.each do |user|
user.public_send("invalidate_#{issuable.noteable_target_type_name}_cache_counts") # rubocop:disable GitlabSecurity/PublicSend
@@ -532,6 +536,16 @@ class IssuableBaseService < ::BaseProjectService
end
# override if needed
+ def handle_label_changes(issuable, old_labels)
+ return unless has_label_changes?(issuable, old_labels)
+
+ # reset to preserve the label sort order (title ASC)
+ issuable.labels.reset
+
+ GraphqlTriggers.issuable_labels_updated(issuable)
+ end
+
+ # override if needed
def handle_changes(issuable, options)
end