diff --git a/src/main.ts b/src/main.ts index 41d3c3b..3d41615 100644 --- a/src/main.ts +++ b/src/main.ts @@ -589,20 +589,37 @@ async function enhanceMergeRequestList() { async function enhanceMergeRequestDetailPage() { const reviewerPanel = document.querySelector('.block.reviewer'); - const title = - document.querySelector('h1.title')?.innerText ?? ''; + + const getTitle = () => { + return document.querySelector('h1.title')?.innerText ?? ''; + }; + const title = getTitle(); + const csrfToken = document.querySelector( 'meta[name="csrf-token"]', )?.content; - if ( - reviewerPanel && - title.length > 0 && - !title.toLowerCase().startsWith('draft:') && - csrfToken - ) { + const mrisDraft = + title.length > 0 && title.toLowerCase().startsWith('draft:'); + + if (!reviewerPanel) { + return; + } + + const convertButton = reviewerPanel.querySelector('#convert-to-draft-button'); + + if (mrisDraft && convertButton) { + convertButton.remove(); + return; + } + + if (!mrisDraft && !convertButton && csrfToken) { const $description = $(/* HTML */ ` -
+
Still in progress? @@ -628,6 +645,7 @@ async function enhanceMergeRequestDetailPage() { const projectPath = urlMatch[1]; const mrIid = urlMatch[2]; + const title = getTitle(); await fetch( getApiUrl( `/projects/${encodeURIComponent(projectPath)}/merge_requests/${mrIid}`, @@ -641,7 +659,7 @@ async function enhanceMergeRequestDetailPage() { body: JSON.stringify({ title: `Draft: ${title}` }), }, ); - await window.location.reload(); + window.location.reload(); }); $description.appendTo(reviewerPanel);