新增:贡献者分页

This commit is contained in:
yystopf 2023-03-22 18:57:56 +08:00
parent ec85b80a98
commit 3762a54eff
3 changed files with 24 additions and 8 deletions

View File

@ -166,8 +166,9 @@ class RepositoriesController < ApplicationController
if params[:filepath].present? || @project.educoder?
@contributors = []
else
result = Gitea::Repository::Contributors::GetService.call(@owner, @repository.identifier)
@contributors = result.is_a?(Hash) && result.key?(:status) ? [] : result
result = Gitea::Repository::Contributors::GetService.call(@owner, @repository.identifier, {page: params[:page], limit: params[:limit]})
@total_count = result[:total_count]
@contributors = result.is_a?(Hash) ? result[:body] : []
end
rescue
@contributors = []

View File

@ -1,22 +1,38 @@
class Gitea::Repository::Contributors::GetService < Gitea::ClientService
attr_reader :owner, :repo_name
attr_reader :owner, :repo_name, :page, :limit
def initialize(owner, repo_name)
def initialize(owner, repo_name, page, limit)
@owner = owner
@repo_name = repo_name
@page = params[:page] || 1
@limit = params[:limit] || 20
end
def call
response = get(url, params)
render_status(response)
render_result(response)
end
private
def params
Hash.new.merge(token: owner.gitea_token)
Hash.new.merge(token: owner.gitea_token, page: page, limit: limit)
end
def url
"/repos/#{owner.login}/#{repo_name}/contributors"
end
def render_result(response)
case response.status
when 200
result = {}
headers = response.headers.to_hash
body = JSON.parse(response.body)
total_count = headers["x-total"]
result.merge(total_count: total_count.to_i, body: body)
else
nil
# {status: -1, message: "#{body['message']}"}
end
end
end

View File

@ -1,7 +1,6 @@
total_count = @contributors.size
json.list @contributors.each do |contributor|
json.partial! 'contributor', locals: { contributor: contributor, project: @project }
end
json.total_count total_count
json.total_count @total_count