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/projects/blame_service.rb')
-rw-r--r--app/services/projects/blame_service.rb69
1 files changed, 0 insertions, 69 deletions
diff --git a/app/services/projects/blame_service.rb b/app/services/projects/blame_service.rb
deleted file mode 100644
index 58e146e5a32..00000000000
--- a/app/services/projects/blame_service.rb
+++ /dev/null
@@ -1,69 +0,0 @@
-# frozen_string_literal: true
-
-# Service class to correctly initialize Gitlab::Blame and Kaminari pagination
-# objects
-module Projects
- class BlameService
- PER_PAGE = 1000
-
- def initialize(blob, commit, params)
- @blob = blob
- @commit = commit
- @page = extract_page(params)
- @pagination_enabled = pagination_state(params)
- end
-
- attr_reader :page
-
- def blame
- Gitlab::Blame.new(blob, commit, range: blame_range)
- end
-
- def pagination
- return unless pagination_enabled
-
- Kaminari.paginate_array([], total_count: blob_lines_count, limit: per_page)
- .tap { |pagination| pagination.max_paginates_per(per_page) }
- .page(page)
- end
-
- def per_page
- PER_PAGE
- end
-
- private
-
- attr_reader :blob, :commit, :pagination_enabled
-
- def blame_range
- return unless pagination_enabled
-
- first_line = (page - 1) * per_page + 1
- last_line = (first_line + per_page).to_i - 1
-
- first_line..last_line
- end
-
- def extract_page(params)
- page = params.fetch(:page, 1).to_i
-
- return 1 if page < 1 || overlimit?(page)
-
- page
- end
-
- def pagination_state(params)
- return false if Gitlab::Utils.to_boolean(params[:no_pagination], default: false)
-
- Feature.enabled?(:blame_page_pagination, commit.project)
- end
-
- def overlimit?(page)
- page * per_page >= blob_lines_count + per_page
- end
-
- def blob_lines_count
- @blob_lines_count ||= blob.data.lines.count
- end
- end
-end