diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb index cd07803d6..f4dd3c8f0 100644 --- a/app/controllers/repositories_controller.rb +++ b/app/controllers/repositories_controller.rb @@ -17,15 +17,15 @@ class RepositoriesController < ApplicationController end # 新版项目详情 - def detail - @user = current_user + def detail + @user = current_user @result = Repositories::DetailService.call(@owner, @repository, @user) @project_fork_id = @project.try(:forked_from_project_id) if @project_fork_id.present? @fork_project = Project.find_by(id: @project_fork_id) @fork_project_user = @fork_project.owner end - rescue Exception => e + rescue Exception => e uid_logger_error(e.message) tip_exception(e.message) end @@ -210,7 +210,7 @@ class RepositoriesController < ApplicationController end def get_ref - @ref = params[:ref] || @project.default_branch + @ref = params[:ref] || @project&.default_branch end def get_latest_commit diff --git a/app/services/repositories/detail_service.rb b/app/services/repositories/detail_service.rb index 58b286ec5..b4b2b9d87 100644 --- a/app/services/repositories/detail_service.rb +++ b/app/services/repositories/detail_service.rb @@ -1,14 +1,14 @@ -class Repositories::DetailService < ApplicationService +class Repositories::DetailService < ApplicationService include Repository::LanguagesPercentagable - attr_reader :owner, :repo, :user + attr_reader :owner, :repo, :user def initialize(owner, repo, user) - @owner = owner - @repo = repo - @user = user + @owner = owner + @repo = repo + @user = user end - def call - if @repo.project.educoder? + def call + if @repo.project.educoder? return { repo: {}, release: [], @@ -31,7 +31,7 @@ class Repositories::DetailService < ApplicationService end end - private + private def repo_suitable Gitea::Repository::GetService.call(@owner, @repo.identifier) end @@ -41,24 +41,26 @@ class Repositories::DetailService < ApplicationService end def branch_suitable - Gitea::Repository::Branches::ListService.call(@owner, @repo.identifier) + branches = Gitea::Repository::Branches::ListService.call(@owner, @repo.identifier) + branches.is_a?(Hash) && branches[:status] == :error ? [] : branches end def tag_suitable - Gitea::Repository::Tags::ListService.call(@owner&.gitea_token, @owner.login, @repo.identifier) + tags = Gitea::Repository::Tags::ListService.call(@owner&.gitea_token, @owner.login, @repo.identifier) + tags.is_a?(Hash) && tags[:status] == -1 ? [] : tags end - - def contributor_suitable + + def contributor_suitable Gitea::Repository::Contributors::GetService.call(@owner, @repo.identifier) end - def language_suitable + def language_suitable result = Gitea::Repository::Languages::ListService.call(@owner.login, @repo.identifier, @user&.gitea_token) result[:status] === :success ? hash_transform_precentagable(result[:body]) : nil end - def readme_suitable + def readme_suitable result = Gitea::Repository::Readme::GetService.call(@owner.login, @repo.identifier, @repo.default_branch, @owner.gitea_token) result[:status] === :success ? result[:body] : nil end -end \ No newline at end of file +end