diff options
author | Mark Fletcher <mark@gitlab.com> | 2016-12-14 23:45:39 +0300 |
---|---|---|
committer | Mark Fletcher <mark@gitlab.com> | 2016-12-16 13:52:59 +0300 |
commit | 9f97fa4d9f4e86e8f1ff1db4621bcf81390936da (patch) | |
tree | 3d5dae75cb1ce884b37d896d5d1316583d5f5c5f /app/services/issuable_base_service.rb | |
parent | 2f736c6d41acb53f70755442972f43921c2ac6f2 (diff) |
Ensure issuable state changes only fire webhooks once
* Webhooks for close and reopen events now fired in respective services only
* Prevents generic 'update' webhooks firing too
Diffstat (limited to 'app/services/issuable_base_service.rb')
-rw-r--r-- | app/services/issuable_base_service.rb | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/app/services/issuable_base_service.rb b/app/services/issuable_base_service.rb index b5f63cc5a1a..ab3d2a9a0cd 100644 --- a/app/services/issuable_base_service.rb +++ b/app/services/issuable_base_service.rb @@ -184,7 +184,8 @@ class IssuableBaseService < BaseService old_labels = issuable.labels.to_a old_mentioned_users = issuable.mentioned_users.to_a - params[:label_ids] = process_label_ids(params, existing_label_ids: issuable.label_ids) + label_ids = process_label_ids(params, existing_label_ids: issuable.label_ids) + params[:label_ids] = label_ids if labels_changing?(issuable.label_ids, label_ids) if params.present? && update_issuable(issuable, params) # We do not touch as it will affect a update on updated_at field @@ -201,6 +202,10 @@ class IssuableBaseService < BaseService issuable end + def labels_changing?(old_label_ids, new_label_ids) + old_label_ids.sort != new_label_ids.sort + end + def change_state(issuable) case params.delete(:state_event) when 'reopen' |