Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app/services/issues/reorder_service.rb')
-rw-r--r--app/services/issues/reorder_service.rb36
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