Improve & simplify GitHub's representation classes
Signed-off-by: Rémy Coutable <remy@rymai.me>
This commit is contained in:
parent
f50b95b007
commit
7833d3fb29
4 changed files with 16 additions and 18 deletions
|
@ -211,7 +211,7 @@ module Github
|
||||||
# for both features, like manipulating assignees, labels
|
# for both features, like manipulating assignees, labels
|
||||||
# and milestones, are provided within the Issues API.
|
# and milestones, are provided within the Issues API.
|
||||||
if representation.pull_request?
|
if representation.pull_request?
|
||||||
return unless representation.labels? || representation.has_comments?
|
return unless representation.labels? || representation.comments?
|
||||||
|
|
||||||
merge_request = MergeRequest.find_by!(target_project_id: project.id, iid: representation.iid)
|
merge_request = MergeRequest.find_by!(target_project_id: project.id, iid: representation.iid)
|
||||||
|
|
||||||
|
@ -248,7 +248,7 @@ module Github
|
||||||
end
|
end
|
||||||
|
|
||||||
def fetch_comments_conditionally(issuable, representation)
|
def fetch_comments_conditionally(issuable, representation)
|
||||||
if representation.has_comments?
|
if representation.comments?
|
||||||
comments_url = "/repos/#{repo}/issues/#{issuable.iid}/comments"
|
comments_url = "/repos/#{repo}/issues/#{issuable.iid}/comments"
|
||||||
fetch_comments(issuable, :comment, comments_url)
|
fetch_comments(issuable, :comment, comments_url)
|
||||||
end
|
end
|
||||||
|
|
|
@ -7,10 +7,14 @@ module Github
|
||||||
raw.dig('user', 'login') || 'unknown'
|
raw.dig('user', 'login') || 'unknown'
|
||||||
end
|
end
|
||||||
|
|
||||||
def repo
|
def repo?
|
||||||
return @repo if defined?(@repo)
|
raw['repo'].present?
|
||||||
|
end
|
||||||
|
|
||||||
@repo = Github::Representation::Repo.new(raw['repo']) if raw['repo'].present?
|
def repo
|
||||||
|
return unless repo?
|
||||||
|
|
||||||
|
@repo ||= Github::Representation::Repo.new(raw['repo'])
|
||||||
end
|
end
|
||||||
|
|
||||||
def ref
|
def ref
|
||||||
|
@ -25,12 +29,6 @@ module Github
|
||||||
Commit.truncate_sha(sha)
|
Commit.truncate_sha(sha)
|
||||||
end
|
end
|
||||||
|
|
||||||
def exists?
|
|
||||||
return @exists if defined?(@exists)
|
|
||||||
|
|
||||||
@exists = repository.branch_exists?(ref)
|
|
||||||
end
|
|
||||||
|
|
||||||
def valid?
|
def valid?
|
||||||
sha.present? && ref.present?
|
sha.present? && ref.present?
|
||||||
end
|
end
|
||||||
|
|
|
@ -5,7 +5,7 @@ module Github
|
||||||
raw['state'] == 'closed' ? 'closed' : 'opened'
|
raw['state'] == 'closed' ? 'closed' : 'opened'
|
||||||
end
|
end
|
||||||
|
|
||||||
def has_comments?
|
def comments?
|
||||||
raw['comments'] > 0
|
raw['comments'] > 0
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
module Github
|
module Github
|
||||||
module Representation
|
module Representation
|
||||||
class PullRequest < Representation::Issuable
|
class PullRequest < Representation::Issuable
|
||||||
delegate :user, :repo, :ref, :sha, to: :source_branch, prefix: true
|
delegate :sha, to: :source_branch, prefix: true
|
||||||
delegate :user, :exists?, :repo, :ref, :sha, :short_sha, to: :target_branch, prefix: true
|
delegate :sha, to: :target_branch, prefix: true
|
||||||
|
|
||||||
def source_project
|
def source_project
|
||||||
project
|
project
|
||||||
|
@ -11,7 +11,7 @@ module Github
|
||||||
def source_branch_name
|
def source_branch_name
|
||||||
# Mimic the "user:branch" displayed in the MR widget,
|
# Mimic the "user:branch" displayed in the MR widget,
|
||||||
# i.e. "Request to merge rymai:add-external-mounts into master"
|
# i.e. "Request to merge rymai:add-external-mounts into master"
|
||||||
cross_project? ? "#{source_branch_user}:#{source_branch_ref}" : source_branch_ref
|
cross_project? ? "#{source_branch.user}:#{source_branch.ref}" : source_branch.ref
|
||||||
end
|
end
|
||||||
|
|
||||||
def target_project
|
def target_project
|
||||||
|
@ -19,7 +19,7 @@ module Github
|
||||||
end
|
end
|
||||||
|
|
||||||
def target_branch_name
|
def target_branch_name
|
||||||
target_branch_ref
|
target_branch.ref
|
||||||
end
|
end
|
||||||
|
|
||||||
def state
|
def state
|
||||||
|
@ -62,9 +62,9 @@ module Github
|
||||||
end
|
end
|
||||||
|
|
||||||
def cross_project?
|
def cross_project?
|
||||||
return true if source_branch_repo.nil?
|
return true unless source_branch.repo?
|
||||||
|
|
||||||
source_branch_repo.id != target_branch_repo.id
|
source_branch.repo.id != target_branch.repo.id
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue