Merge pull request #526 from jakubbortlik/fix/allow-publish-drafts-with-local-changes

fix: allow publishing drafts when local not in sync with remote
This commit is contained in:
Harrison (Harry) Cramer
2026-03-17 20:36:03 -04:00
committed by GitHub

View File

@@ -11,6 +11,8 @@ local List = require("gitlab.utils.list")
local u = require("gitlab.utils") local u = require("gitlab.utils")
local state = require("gitlab.state") local state = require("gitlab.state")
local branch_not_in_sync_comment = " (even if local branch not in sync with remote)"
local M = {} local M = {}
---Re-fetches all draft notes (and non-draft notes) and re-renders the relevant views ---Re-fetches all draft notes (and non-draft notes) and re-renders the relevant views
@@ -64,8 +66,10 @@ end
-- This function will trigger a popup prompting you to publish the current draft comment -- This function will trigger a popup prompting you to publish the current draft comment
M.publish_draft = function(tree) M.publish_draft = function(tree)
local branch_in_sync = git.check_current_branch_up_to_date_on_remote(vim.log.levels.ERROR)
local sync_comment = branch_in_sync and "" or branch_not_in_sync_comment
vim.ui.select({ "Confirm", "Cancel" }, { vim.ui.select({ "Confirm", "Cancel" }, {
prompt = "Publish current draft comment?", prompt = string.format("Publish current draft comment%s?", sync_comment),
}, function(choice) }, function(choice)
if choice == "Confirm" then if choice == "Confirm" then
M.confirm_publish_draft(tree) M.confirm_publish_draft(tree)
@@ -75,8 +79,10 @@ end
-- This function will trigger a popup prompting you to publish all draft notes -- This function will trigger a popup prompting you to publish all draft notes
M.publish_all_drafts = function() M.publish_all_drafts = function()
local branch_in_sync = git.check_current_branch_up_to_date_on_remote(vim.log.levels.ERROR)
local sync_comment = branch_in_sync and "" or branch_not_in_sync_comment
vim.ui.select({ "Confirm", "Cancel" }, { vim.ui.select({ "Confirm", "Cancel" }, {
prompt = "Publish all drafts?", prompt = string.format("Publish all drafts%s?", sync_comment),
}, function(choice) }, function(choice)
if choice == "Confirm" then if choice == "Confirm" then
M.confirm_publish_all_drafts() M.confirm_publish_all_drafts()
@@ -86,9 +92,6 @@ end
---Publishes all draft notes and comments. Re-renders all discussion views. ---Publishes all draft notes and comments. Re-renders all discussion views.
M.confirm_publish_all_drafts = function() M.confirm_publish_all_drafts = function()
if not git.check_current_branch_up_to_date_on_remote(vim.log.levels.ERROR) then
return
end
local body = { publish_all = true } local body = { publish_all = true }
job.run_job("/mr/draft_notes/publish", "POST", body, function(data) job.run_job("/mr/draft_notes/publish", "POST", body, function(data)
u.notify(data.message, vim.log.levels.INFO) u.notify(data.message, vim.log.levels.INFO)
@@ -108,9 +111,6 @@ end
---and re-render it. ---and re-render it.
---@param tree NuiTree ---@param tree NuiTree
M.confirm_publish_draft = function(tree) M.confirm_publish_draft = function(tree)
if not git.check_current_branch_up_to_date_on_remote(vim.log.levels.ERROR) then
return
end
local current_node = tree:get_node() local current_node = tree:get_node()
local note_node = common.get_note_node(tree, current_node) local note_node = common.get_note_node(tree, current_node)
local root_node = common.get_root_node(tree, current_node) local root_node = common.get_root_node(tree, current_node)