diff --git a/cmd/list_discussions.go b/cmd/list_discussions.go index f761d31..60f63c4 100644 --- a/cmd/list_discussions.go +++ b/cmd/list_discussions.go @@ -44,18 +44,18 @@ func (c *Client) ListDiscussions() ([]*gitlab.Discussion, int, error) { return nil, res.Response.StatusCode, fmt.Errorf("Listing discussions failed: %w", err) } - var diffNotes []*gitlab.Discussion + var realDiscussions []*gitlab.Discussion for i := 0; i < len(discussions); i++ { notes := discussions[i].Notes for j := 0; j < len(notes); j++ { - if !notes[j].System { - diffNotes = append(diffNotes, discussions[i]) + if notes[j].Type == gitlab.NoteTypeValue("DiffNote") { + realDiscussions = append(realDiscussions, discussions[i]) break } } } - sortedDiscussions := SortableDiscussions(diffNotes) + sortedDiscussions := SortableDiscussions(realDiscussions) sort.Sort(sortedDiscussions) return sortedDiscussions, http.StatusOK, nil diff --git a/lua/gitlab/discussions.lua b/lua/gitlab/discussions.lua index 3c2726e..8af4d46 100644 --- a/lua/gitlab/discussions.lua +++ b/lua/gitlab/discussions.lua @@ -1,22 +1,22 @@ -local u = require("gitlab.utils") -local NuiTree = require("nui.tree") -local job = require("gitlab.job") -local state = require("gitlab.state") -local Job = require("plenary.job") -local Popup = require("nui.popup") -local keymaps = require("gitlab.keymaps") +local u = require("gitlab.utils") +local NuiTree = require("nui.tree") +local job = require("gitlab.job") +local state = require("gitlab.state") +local Job = require("plenary.job") +local Popup = require("nui.popup") +local keymaps = require("gitlab.keymaps") -local M = {} +local M = {} -local replyPopup = Popup(u.create_popup_state("Reply", "80%", "80%")) +local replyPopup = Popup(u.create_popup_state("Reply", "80%", "80%")) -M.reply = function() +M.reply = function() if u.base_invalid() then return end replyPopup:mount() keymaps.set_popup_keymaps(replyPopup, M.send_reply) end -M.send_reply = function(text) +M.send_reply = function(text) local escapedText = string.gsub(text, "\n", "\\n") local json = string.format('{"discussion_id": "%s", "reply": "%s"}', state.ACTIVE_DISCUSSION, escapedText) job.run_job("reply", "POST", json, function(data) @@ -33,15 +33,6 @@ M.send_reply = function(text) 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 M.list_discussions = function() if u.base_invalid() then return end @@ -72,10 +63,11 @@ M.list_discussions = function() for i, discussion in ipairs(data.discussions) do local discussionChildren = {} for _, note in ipairs(discussion.notes) do - if note.position then - addToDiscussionTree(i, note, discussionChildren) - else + local note_node = M.build_note(note) + if i == 1 then + note_node:expand() end + table.insert(discussionChildren, note_node) end local discussionNode = NuiTree.Node({ text = discussion.id, @@ -95,6 +87,7 @@ M.list_discussions = function() state.tree:render() vim.api.nvim_buf_set_option(buf, 'filetype', 'markdown') u.darken_metadata(buf, '') + M.jump_to_file() end) end end, @@ -105,7 +98,6 @@ M.list_discussions = function() }):start() end - M.jump_to_file = function() local node = state.tree:get_node() if node == nil then return end @@ -197,22 +189,14 @@ M.build_note = function(note) local noteHeader = "@" .. note.author.username .. " on " .. u.format_date(note.created_at) - 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 line_number = note.position.new_line or note.position.old_line local note_node = NuiTree.Node( { text = noteHeader, id = note.id, - file_name = file_name, + file_name = note.position.new_path, line_number = line_number, - is_note = true, - is_code_comment = type(note.position) == 'table' + is_note = true }, noteTextNodes) return note_node diff --git a/lua/gitlab/utils/init.lua b/lua/gitlab/utils/init.lua index a2515d9..d0000c6 100644 --- a/lua/gitlab/utils/init.lua +++ b/lua/gitlab/utils/init.lua @@ -131,7 +131,7 @@ end local function jump_to_file(filename, line_number) - if line_number == nil or filename == nil then return end + if line_number == nil then line_number = 1 end vim.api.nvim_command("wincmd l") local bufnr = vim.fn.bufnr(filename) if bufnr ~= -1 then