diff options
Diffstat (limited to 'app/services/issuable_base_service.rb')
-rw-r--r-- | app/services/issuable_base_service.rb | 14 |
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 |