diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-04-13 21:11:28 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-04-13 21:11:28 +0300 |
commit | a5605d87fb839e0b1015ad9e736c44fbb2ada202 (patch) | |
tree | 9717afb7cc7d663de6bda5d78c651aafb73a16a3 /app/services/boards/lists | |
parent | 536d72ba7ea2226b56ddc55a3eb35c96a9ba3b6d (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/services/boards/lists')
-rw-r--r-- | app/services/boards/lists/base_update_service.rb | 58 | ||||
-rw-r--r-- | app/services/boards/lists/update_service.rb | 45 |
2 files changed, 59 insertions, 44 deletions
diff --git a/app/services/boards/lists/base_update_service.rb b/app/services/boards/lists/base_update_service.rb new file mode 100644 index 00000000000..faf58e405fc --- /dev/null +++ b/app/services/boards/lists/base_update_service.rb @@ -0,0 +1,58 @@ +# frozen_string_literal: true + +module Boards + module Lists + class BaseUpdateService < Boards::BaseService + def execute(list) + if execute_by_params(list) + success(list: list) + else + error(list.errors.messages, 422) + end + end + + private + + def execute_by_params(list) + update_preferences_result = update_preferences(list) if can_read?(list) + update_position_result = update_position(list) if can_admin?(list) + + update_preferences_result || update_position_result + end + + def update_preferences(list) + return unless preferences? + + list.update_preferences_for(current_user, preferences) + end + + def update_position(list) + return unless position? + + move_service = Boards::Lists::MoveService.new(parent, current_user, params) + + move_service.execute(list) + end + + def preferences + { collapsed: Gitlab::Utils.to_boolean(params[:collapsed]) } + end + + def preferences? + params.has_key?(:collapsed) + end + + def position? + params.has_key?(:position) + end + + def can_read?(list) + raise NotImplementedError + end + + def can_admin?(list) + raise NotImplementedError + end + end + end +end diff --git a/app/services/boards/lists/update_service.rb b/app/services/boards/lists/update_service.rb index e2d9c371ca2..2e1a6592cd9 100644 --- a/app/services/boards/lists/update_service.rb +++ b/app/services/boards/lists/update_service.rb @@ -2,50 +2,7 @@ module Boards module Lists - class UpdateService < Boards::BaseService - def execute(list) - if execute_by_params(list) - success(list: list) - else - error(list.errors.messages, 422) - end - end - - private - - def execute_by_params(list) - update_preferences_result = update_preferences(list) if can_read?(list) - update_position_result = update_position(list) if can_admin?(list) - - update_preferences_result || update_position_result - end - - def update_preferences(list) - return unless preferences? - - list.update_preferences_for(current_user, preferences) - end - - def update_position(list) - return unless position? - - move_service = Boards::Lists::MoveService.new(parent, current_user, params) - - move_service.execute(list) - end - - def preferences - { collapsed: Gitlab::Utils.to_boolean(params[:collapsed]) } - end - - def preferences? - params.has_key?(:collapsed) - end - - def position? - params.has_key?(:position) - end - + class UpdateService < Boards::Lists::BaseUpdateService def can_read?(list) Ability.allowed?(current_user, :read_issue_board_list, parent) end |