diff options
Diffstat (limited to 'app/services/work_items/update_service.rb')
-rw-r--r-- | app/services/work_items/update_service.rb | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/app/services/work_items/update_service.rb b/app/services/work_items/update_service.rb index 5c45f4d90e5..0b420881b4b 100644 --- a/app/services/work_items/update_service.rb +++ b/app/services/work_items/update_service.rb @@ -2,12 +2,30 @@ module WorkItems class UpdateService < ::Issues::UpdateService + def initialize(project:, current_user: nil, params: {}, spam_params: nil, widget_params: {}) + super(project: project, current_user: current_user, params: params, spam_params: nil) + + @widget_params = widget_params + end + private - def after_update(issuable) + def update(work_item) + execute_widgets(work_item: work_item, callback: :update) + super + end + + def after_update(work_item) + super + + GraphqlTriggers.issuable_title_updated(work_item) if work_item.previous_changes.key?(:title) + end - GraphqlTriggers.issuable_title_updated(issuable) if issuable.previous_changes.key?(:title) + def execute_widgets(work_item:, callback:) + work_item.widgets.each do |widget| + widget.try(callback, params: @widget_params[widget.class.api_symbol]) + end end end end |