Pull down all non-code notes (#14)

This commit changes the filter on the API response so that we are only
filtering out system level notes. This means we get notes that are not
linked to specific locations in the code.

Subsequent work will have to separate these types of notes from the
other code-linked notes and probably display them in some sort of
separate tree.
This commit is contained in:
Harrison (Harry) Cramer
2023-08-04 14:25:58 -04:00
committed by GitHub
parent 22389fdb3d
commit f15711edab
3 changed files with 40 additions and 24 deletions

View File

@@ -44,18 +44,18 @@ func (c *Client) ListDiscussions() ([]*gitlab.Discussion, int, error) {
return nil, res.Response.StatusCode, fmt.Errorf("Listing discussions failed: %w", err) return nil, res.Response.StatusCode, fmt.Errorf("Listing discussions failed: %w", err)
} }
var realDiscussions []*gitlab.Discussion var diffNotes []*gitlab.Discussion
for i := 0; i < len(discussions); i++ { for i := 0; i < len(discussions); i++ {
notes := discussions[i].Notes notes := discussions[i].Notes
for j := 0; j < len(notes); j++ { for j := 0; j < len(notes); j++ {
if notes[j].Type == gitlab.NoteTypeValue("DiffNote") { if !notes[j].System {
realDiscussions = append(realDiscussions, discussions[i]) diffNotes = append(diffNotes, discussions[i])
break break
} }
} }
} }
sortedDiscussions := SortableDiscussions(realDiscussions) sortedDiscussions := SortableDiscussions(diffNotes)
sort.Sort(sortedDiscussions) sort.Sort(sortedDiscussions)
return sortedDiscussions, http.StatusOK, nil return sortedDiscussions, http.StatusOK, nil

View File

@@ -33,6 +33,15 @@ M.send_reply = function(text)
end) end)
end end
-- Adds node to discussion tree
local function addToDiscussionTree(i, note, discussionChildren)
local note_node = M.build_note(note)
if i == 1 then
note_node:expand()
end
table.insert(discussionChildren, note_node)
end
-- Places all of the discussions into a readable list -- Places all of the discussions into a readable list
M.list_discussions = function() M.list_discussions = function()
if u.base_invalid() then return end if u.base_invalid() then return end
@@ -63,11 +72,10 @@ M.list_discussions = function()
for i, discussion in ipairs(data.discussions) do for i, discussion in ipairs(data.discussions) do
local discussionChildren = {} local discussionChildren = {}
for _, note in ipairs(discussion.notes) do for _, note in ipairs(discussion.notes) do
local note_node = M.build_note(note) if note.position then
if i == 1 then addToDiscussionTree(i, note, discussionChildren)
note_node:expand() else
end end
table.insert(discussionChildren, note_node)
end end
local discussionNode = NuiTree.Node({ local discussionNode = NuiTree.Node({
text = discussion.id, text = discussion.id,
@@ -87,7 +95,6 @@ M.list_discussions = function()
state.tree:render() state.tree:render()
vim.api.nvim_buf_set_option(buf, 'filetype', 'markdown') vim.api.nvim_buf_set_option(buf, 'filetype', 'markdown')
u.darken_metadata(buf, '') u.darken_metadata(buf, '')
M.jump_to_file()
end) end)
end end
end, end,
@@ -98,6 +105,7 @@ M.list_discussions = function()
}):start() }):start()
end end
M.jump_to_file = function() M.jump_to_file = function()
local node = state.tree:get_node() local node = state.tree:get_node()
if node == nil then return end if node == nil then return end
@@ -189,14 +197,22 @@ M.build_note = function(note)
local noteHeader = "@" .. local noteHeader = "@" ..
note.author.username .. " on " .. u.format_date(note.created_at) note.author.username .. " on " .. u.format_date(note.created_at)
local line_number = note.position.new_line or note.position.old_line local file_name
local line_number
if (type(note.position) == 'table') then
line_number = note.position.new_line or note.position.old_line
file_name = note.position.new_path
end
local note_node = NuiTree.Node( local note_node = NuiTree.Node(
{ {
text = noteHeader, text = noteHeader,
id = note.id, id = note.id,
file_name = note.position.new_path, file_name = file_name,
line_number = line_number, line_number = line_number,
is_note = true is_note = true,
is_code_comment = type(note.position) == 'table'
}, noteTextNodes) }, noteTextNodes)
return note_node return note_node

View File

@@ -131,7 +131,7 @@ end
local function jump_to_file(filename, line_number) local function jump_to_file(filename, line_number)
if line_number == nil then line_number = 1 end if line_number == nil or filename == nil then return end
vim.api.nvim_command("wincmd l") vim.api.nvim_command("wincmd l")
local bufnr = vim.fn.bufnr(filename) local bufnr = vim.fn.bufnr(filename)
if bufnr ~= -1 then if bufnr ~= -1 then