From 545f0129d53a967c8cb9d5d074d4b55be8b10df6 Mon Sep 17 00:00:00 2001 From: silverwind Date: Tue, 16 Aug 2022 20:34:14 +0200 Subject: [PATCH 1/2] Fix tooltip init after review Previous code passed a jQuery collection which initTooltip couldn't handle. Instead, iterate the individial matched elements and add a dollar to the variable name to make it clear it's jQuery. Fixes: https://github.com/go-gitea/gitea/issues/20809 --- web_src/js/features/repo-diff.js | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/web_src/js/features/repo-diff.js b/web_src/js/features/repo-diff.js index 59e0c147d9eac..156dac9a9d79c 100644 --- a/web_src/js/features/repo-diff.js +++ b/web_src/js/features/repo-diff.js @@ -50,18 +50,21 @@ export function initRepoDiffConversationForm() { return; } - const newConversationHolder = $(await $.post(form.attr('action'), form.serialize())); - const {path, side, idx} = newConversationHolder.data(); + const $newConversationHolder = $(await $.post(form.attr('action'), form.serialize())); + const {path, side, idx} = $newConversationHolder.data(); - initTooltip(newConversationHolder.find('.tooltip')); - form.closest('.conversation-holder').replaceWith(newConversationHolder); + $newConversationHolder.find('.tooltip').each(function () { + initTooltip(this); + }); + + form.closest('.conversation-holder').replaceWith($newConversationHolder); if (form.closest('tr').data('line-type') === 'same') { $(`[data-path="${path}"] a.add-code-comment[data-idx="${idx}"]`).addClass('invisible'); } else { $(`[data-path="${path}"] a.add-code-comment[data-side="${side}"][data-idx="${idx}"]`).addClass('invisible'); } - newConversationHolder.find('.dropdown').dropdown(); - initCompReactionSelector(newConversationHolder); + $newConversationHolder.find('.dropdown').dropdown(); + initCompReactionSelector($newConversationHolder); }); From 57a73259b8a6c586b2d4b752b693d7010d9ad6dd Mon Sep 17 00:00:00 2001 From: silverwind Date: Tue, 16 Aug 2022 20:46:56 +0200 Subject: [PATCH 2/2] rename form variable as well and avoid jQuery serialize --- web_src/js/features/repo-diff.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/web_src/js/features/repo-diff.js b/web_src/js/features/repo-diff.js index 156dac9a9d79c..0a59bcf1c20c6 100644 --- a/web_src/js/features/repo-diff.js +++ b/web_src/js/features/repo-diff.js @@ -44,21 +44,22 @@ export function initRepoDiffConversationForm() { $(document).on('submit', '.conversation-holder form', async (e) => { e.preventDefault(); - const form = $(e.target); - const $textArea = form.find('textarea'); + const $form = $(e.target); + const $textArea = $form.find('textarea'); if (!validateTextareaNonEmpty($textArea)) { return; } - const $newConversationHolder = $(await $.post(form.attr('action'), form.serialize())); + const formDataString = String(new URLSearchParams(new FormData($form[0]))); + const $newConversationHolder = $(await $.post($form.attr('action'), formDataString)); const {path, side, idx} = $newConversationHolder.data(); $newConversationHolder.find('.tooltip').each(function () { initTooltip(this); }); - form.closest('.conversation-holder').replaceWith($newConversationHolder); - if (form.closest('tr').data('line-type') === 'same') { + $form.closest('.conversation-holder').replaceWith($newConversationHolder); + if ($form.closest('tr').data('line-type') === 'same') { $(`[data-path="${path}"] a.add-code-comment[data-idx="${idx}"]`).addClass('invisible'); } else { $(`[data-path="${path}"] a.add-code-comment[data-side="${side}"][data-idx="${idx}"]`).addClass('invisible');