diff options
Diffstat (limited to 'app/services/issues/reorder_service.rb')
-rw-r--r-- | app/services/issues/reorder_service.rb | 36 |
1 files changed, 10 insertions, 26 deletions
diff --git a/app/services/issues/reorder_service.rb b/app/services/issues/reorder_service.rb index 9c5fbec7d8e..5443d41ac30 100644 --- a/app/services/issues/reorder_service.rb +++ b/app/services/issues/reorder_service.rb @@ -2,47 +2,31 @@ module Issues class ReorderService < Issues::BaseService + include Gitlab::Utils::StrongMemoize + def execute(issue) return false unless can?(current_user, :update_issue, issue) - return false if group && !can?(current_user, :read_group, group) - - attrs = issue_params(group) - return false if attrs.empty? + return false unless move_between_ids - update(issue, attrs) + update(issue, { move_between_ids: move_between_ids }) end private - def group - return unless params[:group_full_path] - - @group ||= Group.find_by_full_path(params[:group_full_path]) - end - def update(issue, attrs) ::Issues::UpdateService.new(project: project, current_user: current_user, params: attrs).execute(issue) rescue ActiveRecord::RecordNotFound false end - def issue_params(group) - attrs = {} - - if move_between_ids - attrs[:move_between_ids] = move_between_ids - attrs[:board_group_id] = group&.id - end - - attrs - end - def move_between_ids - ids = [params[:move_after_id], params[:move_before_id]] - .map(&:to_i) - .map { |m| m > 0 ? m : nil } + strong_memoize(:move_between_ids) do + ids = [params[:move_before_id], params[:move_after_id]] + .map(&:to_i) + .map { |m| m > 0 ? m : nil } - ids.any? ? ids : nil + ids.any? ? ids : nil + end end end end |