From f07037abe8b6f5621b8b41981ceed4cf6c5e7a3d Mon Sep 17 00:00:00 2001 From: Will Dean <57733339+wd60622@users.noreply.github.com> Date: Wed, 15 Jan 2025 10:44:55 +0100 Subject: [PATCH] add ReferencedEvent to issue timeline (#788) --- lua/octo/gh/fragments.lua | 17 +++++++++++++++++ lua/octo/gh/graphql.lua | 8 ++++---- lua/octo/model/octo-buffer.lua | 3 +++ lua/octo/ui/writers.lua | 26 ++++++++++++++++++++++++++ 4 files changed, 50 insertions(+), 4 deletions(-) diff --git a/lua/octo/gh/fragments.lua b/lua/octo/gh/fragments.lua index 2d5f2e28..28cfdd81 100644 --- a/lua/octo/gh/fragments.lua +++ b/lua/octo/gh/fragments.lua @@ -58,6 +58,22 @@ fragment ConnectedEventFragment on ConnectedEvent { } } ]] +M.referenced_event = [[ +fragment ReferencedEventFragment on ReferencedEvent { + createdAt + actor { + login + } + commit { + __typename + abbreviatedOid + message + repository { + nameWithOwner + } + } +} +]] M.cross_referenced_event = [[ fragment CrossReferencedEventFragment on CrossReferencedEvent { createdAt @@ -365,6 +381,7 @@ fragment IssueTimelineItemsConnectionFragment on IssueTimelineItemsConnection { ...AssignedEventFragment ...ClosedEventFragment ...ConnectedEventFragment + ...ReferencedEventFragment ...CrossReferencedEventFragment ...DemilestonedEventFragment ...IssueCommentFragment diff --git a/lua/octo/gh/graphql.lua b/lua/octo/gh/graphql.lua index 67d990a3..730c6957 100644 --- a/lua/octo/gh/graphql.lua +++ b/lua/octo/gh/graphql.lua @@ -462,7 +462,7 @@ M.create_issue_mutation = [[ } } } -]] .. fragments.cross_referenced_event .. fragments.issue .. fragments.pull_request .. fragments.connected_event .. fragments.milestoned_event .. fragments.demilestoned_event .. fragments.reaction_groups .. fragments.label_connection .. fragments.label .. fragments.assignee_connection .. fragments.issue_comment .. fragments.assigned_event .. fragments.labeled_event .. fragments.unlabeled_event .. fragments.closed_event .. fragments.reopened_event .. fragments.project_cards .. fragments.issue_timeline_items_connection .. fragments.renamed_title_event .. fragments.issue_information +]] .. fragments.cross_referenced_event .. fragments.issue .. fragments.pull_request .. fragments.connected_event .. fragments.milestoned_event .. fragments.demilestoned_event .. fragments.reaction_groups .. fragments.label_connection .. fragments.label .. fragments.assignee_connection .. fragments.issue_comment .. fragments.assigned_event .. fragments.labeled_event .. fragments.unlabeled_event .. fragments.closed_event .. fragments.reopened_event .. fragments.project_cards .. fragments.issue_timeline_items_connection .. fragments.renamed_title_event .. fragments.issue_information .. fragments.referenced_event M.close_issue_mutation = [[ mutation { @@ -499,7 +499,7 @@ mutation { } } } -]] .. fragments.cross_referenced_event .. fragments.issue .. fragments.pull_request .. fragments.connected_event .. fragments.milestoned_event .. fragments.demilestoned_event .. fragments.label_connection .. fragments.label .. fragments.reaction_groups .. fragments.assignee_connection .. fragments.issue_comment .. fragments.assigned_event .. fragments.labeled_event .. fragments.unlabeled_event .. fragments.closed_event .. fragments.reopened_event .. fragments.issue_timeline_items_connection .. fragments.issue_information .. fragments.renamed_title_event +]] .. fragments.cross_referenced_event .. fragments.issue .. fragments.pull_request .. fragments.connected_event .. fragments.milestoned_event .. fragments.demilestoned_event .. fragments.label_connection .. fragments.label .. fragments.reaction_groups .. fragments.assignee_connection .. fragments.issue_comment .. fragments.assigned_event .. fragments.labeled_event .. fragments.unlabeled_event .. fragments.closed_event .. fragments.reopened_event .. fragments.issue_timeline_items_connection .. fragments.issue_information .. fragments.renamed_title_event .. fragments.referenced_event -- https://docs.github.com/en/free-pro-team@latest/graphql/reference/mutations#updateissue M.update_issue_state_mutation = [[ @@ -537,7 +537,7 @@ M.update_issue_state_mutation = [[ } } } -]] .. fragments.cross_referenced_event .. fragments.issue .. fragments.pull_request .. fragments.connected_event .. fragments.milestoned_event .. fragments.demilestoned_event .. fragments.reaction_groups .. fragments.label_connection .. fragments.label .. fragments.assignee_connection .. fragments.issue_comment .. fragments.assigned_event .. fragments.labeled_event .. fragments.unlabeled_event .. fragments.closed_event .. fragments.reopened_event .. fragments.issue_timeline_items_connection .. fragments.issue_information .. fragments.renamed_title_event +]] .. fragments.cross_referenced_event .. fragments.issue .. fragments.pull_request .. fragments.connected_event .. fragments.milestoned_event .. fragments.demilestoned_event .. fragments.reaction_groups .. fragments.label_connection .. fragments.label .. fragments.assignee_connection .. fragments.issue_comment .. fragments.assigned_event .. fragments.labeled_event .. fragments.unlabeled_event .. fragments.closed_event .. fragments.reopened_event .. fragments.issue_timeline_items_connection .. fragments.issue_information .. fragments.renamed_title_event .. fragments.referenced_event -- https://docs.github.com/en/free-pro-team@latest/graphql/reference/mutations#updatepullrequest M.update_pull_request_mutation = [[ @@ -847,7 +847,7 @@ query($endCursor: String) { } } } -]] .. fragments.cross_referenced_event .. fragments.issue .. fragments.pull_request .. fragments.connected_event .. fragments.milestoned_event .. fragments.demilestoned_event .. fragments.reaction_groups .. fragments.label .. fragments.label_connection .. fragments.assignee_connection .. fragments.issue_comment .. fragments.assigned_event .. fragments.labeled_event .. fragments.unlabeled_event .. fragments.closed_event .. fragments.reopened_event .. fragments.project_cards .. fragments.renamed_title_event .. fragments.issue_timeline_items_connection .. fragments.issue_information +]] .. fragments.cross_referenced_event .. fragments.issue .. fragments.pull_request .. fragments.connected_event .. fragments.milestoned_event .. fragments.demilestoned_event .. fragments.reaction_groups .. fragments.label .. fragments.label_connection .. fragments.assignee_connection .. fragments.issue_comment .. fragments.assigned_event .. fragments.labeled_event .. fragments.unlabeled_event .. fragments.closed_event .. fragments.reopened_event .. fragments.project_cards .. fragments.renamed_title_event .. fragments.issue_timeline_items_connection .. fragments.issue_information .. fragments.referenced_event -- https://docs.github.com/en/graphql/reference/unions#issueorpullrequest M.issue_kind_query = [[ diff --git a/lua/octo/model/octo-buffer.lua b/lua/octo/model/octo-buffer.lua index 44b260ab..3c60eeb8 100644 --- a/lua/octo/model/octo-buffer.lua +++ b/lua/octo/model/octo-buffer.lua @@ -223,6 +223,9 @@ function OctoBuffer:render_issue() elseif item.__typename == "CrossReferencedEvent" then writers.write_cross_referenced_event(self.bufnr, item) prev_is_event = true + elseif item.__typename == "ReferencedEvent" then + writers.write_referenced_event(self.bufnr, item) + prev_is_event = true elseif item.__typename == "MilestonedEvent" then writers.write_milestoned_event(self.bufnr, item) prev_is_event = true diff --git a/lua/octo/ui/writers.lua b/lua/octo/ui/writers.lua index a8f3c3f9..447abedf 100644 --- a/lua/octo/ui/writers.lua +++ b/lua/octo/ui/writers.lua @@ -1363,6 +1363,32 @@ local function write_issue_or_pr(bufnr, item) write_event(bufnr, vt) end +local write_reference_commit = function(bufnr, commit) + local vt = {} + table.insert(vt, { " ", "OctoTimelineItemHeading" }) + table.insert(vt, { commit.message, "OctoTimelineItemHeading" }) + table.insert(vt, { " ", "OctoTimelineItemHeading" }) + table.insert(vt, { commit.abbreviatedOid, "OctoTimelineItemHeading" }) + write_event(bufnr, vt) +end + +function M.write_referenced_event(bufnr, item) + local vt = {} + local conf = config.values + table.insert(vt, { conf.timeline_marker .. " ", "OctoTimelineMarker" }) + table.insert(vt, { "EVENT: ", "OctoTimelineItemHeading" }) + table.insert(vt, { + item.actor.login, + item.actor.login == vim.g.octo_viewer and "OctoUserViewer" or "OctoUser", + }) + table.insert(vt, { " added a commit to ", "OctoTimelineItemHeading" }) + table.insert(vt, { item.commit.repository.nameWithOwner, "OctoDetailsLabel" }) + table.insert(vt, { " that referenced this issue ", "OctoTimelineItemHeading" }) + table.insert(vt, { utils.format_date(item.createdAt), "OctoDate" }) + write_event(bufnr, vt) + write_reference_commit(bufnr, item.commit) +end + function M.write_cross_referenced_event(bufnr, item) local vt = {} local conf = config.values