Commit 7833d3fb authored by Rémy Coutable's avatar Rémy Coutable

Improve & simplify GitHub's representation classes

Signed-off-by: default avatarRémy Coutable <remy@rymai.me>
parent f50b95b0
...@@ -211,7 +211,7 @@ module Github ...@@ -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 ...@@ -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 ...@@ -7,10 +7,14 @@ module Github
raw.dig('user', 'login') || 'unknown' raw.dig('user', 'login') || 'unknown'
end end
def repo?
raw['repo'].present?
end
def repo def repo
return @repo if defined?(@repo) return unless repo?
@repo = Github::Representation::Repo.new(raw['repo']) if raw['repo'].present? @repo ||= Github::Representation::Repo.new(raw['repo'])
end end
def ref def ref
...@@ -25,12 +29,6 @@ module Github ...@@ -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 ...@@ -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
......
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 ...@@ -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 ...@@ -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 ...@@ -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
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment