From 1e16dd9c9bf2fb8f8a1d195d5b47590ea4dfd458 Mon Sep 17 00:00:00 2001 From: Yarden Shoham Date: Fri, 15 Mar 2024 20:02:43 +0200 Subject: [PATCH] Remove jQuery AJAX from the comment edit box (#29812) - Removed all jQuery AJAX calls and replaced with our fetch wrapper - Tested the file addition and removal functionality and it works as before # Demo using `fetch` instead of jQuery AJAX ![demo](https://github.com/go-gitea/gitea/assets/20454870/846ed6d5-3798-43ca-920c-d619e9c3d745) --------- Signed-off-by: Yarden Shoham Co-authored-by: silverwind (cherry picked from commit bfb0a5a41ecb040f66ab664e22250571f339826a) --- web_src/js/features/repo-legacy.js | 48 ++++++++++++++++++------------ 1 file changed, 29 insertions(+), 19 deletions(-) diff --git a/web_src/js/features/repo-legacy.js b/web_src/js/features/repo-legacy.js index 60950fd17..24fcc7c22 100644 --- a/web_src/js/features/repo-legacy.js +++ b/web_src/js/features/repo-legacy.js @@ -24,7 +24,7 @@ import {initRepoPullRequestCommitStatus} from './repo-issue-pr-status.js'; import {hideElem, showElem} from '../utils/dom.js'; import {getComboMarkdownEditor, initComboMarkdownEditor} from './comp/ComboMarkdownEditor.js'; import {attachRefIssueContextPopup} from './contextpopup.js'; -import {POST} from '../modules/fetch.js'; +import {POST, GET} from '../modules/fetch.js'; const {csrfToken} = window.config; @@ -83,7 +83,7 @@ export function initRepoCommentForm() { await POST(form.attr('action'), {data: params}); window.location.reload(); } catch (error) { - console.error('Error:', error); + console.error(error); } } else if (editMode === '') { $selectBranch.find('.ui .branch-name').text(selectedValue); @@ -355,14 +355,15 @@ async function onEditContent(event) { const input = $(``).val(data.uuid); $dropzone.find('.files').append(input); }); - this.on('removedfile', (file) => { + this.on('removedfile', async (file) => { if (disableRemovedfileEvent) return; $(`#${file.uuid}`).remove(); if ($dropzone.attr('data-remove-url') && !fileUuidDict[file.uuid].submitted) { - $.post($dropzone.attr('data-remove-url'), { - file: file.uuid, - _csrf: csrfToken, - }); + try { + await POST($dropzone.attr('data-remove-url'), {data: new URLSearchParams({file: file.uuid})}); + } catch (error) { + console.error(error); + } } }); this.on('submit', () => { @@ -370,8 +371,10 @@ async function onEditContent(event) { fileUuidDict[fileUuid].submitted = true; }); }); - this.on('reload', () => { - $.getJSON($editContentZone.attr('data-attachment-url'), (data) => { + this.on('reload', async () => { + try { + const response = await GET($editContentZone.attr('data-attachment-url')); + const data = await response.json(); // do not trigger the "removedfile" event, otherwise the attachments would be deleted from server disableRemovedfileEvent = true; dz.removeAllFiles(true); @@ -390,7 +393,9 @@ async function onEditContent(event) { const input = $(``).val(attachment.uuid); $dropzone.find('.files').append(input); } - }); + } catch (error) { + console.error(error); + } }); }, }); @@ -406,22 +411,25 @@ async function onEditContent(event) { } }; - const saveAndRefresh = (dz) => { + const saveAndRefresh = async (dz) => { showElem($renderContent); hideElem($editContentZone); - $.post($editContentZone.attr('data-update-url'), { - _csrf: csrfToken, - content: comboMarkdownEditor.value(), - context: $editContentZone.attr('data-context'), - files: dz.files.map((file) => file.uuid), - }, (data) => { + + try { + const params = new URLSearchParams({ + content: comboMarkdownEditor.value(), + context: $editContentZone.attr('data-context'), + }); + for (const file of dz.files) params.append('files[]', file.uuid); + + const response = await POST($editContentZone.attr('data-update-url'), {data: params}); + const data = await response.json(); if (!data.content) { $renderContent.html($('#no-content').html()); $rawContent.text(''); } else { $renderContent.html(data.content); $rawContent.text(comboMarkdownEditor.value()); - const refIssues = $renderContent.find('p .ref-issue'); attachRefIssueContextPopup(refIssues); } @@ -442,7 +450,9 @@ async function onEditContent(event) { } initMarkupContent(); initCommentContent(); - }); + } catch (error) { + console.error(error); + } }; if (!$editContentZone.html()) {