From ff0c9a04a5b21d970b3f6996bcac674308fc2612 Mon Sep 17 00:00:00 2001 From: silverwind Date: Mon, 15 Apr 2024 22:16:05 +0200 Subject: [PATCH] Remove jQuery `.text()` --- .eslintrc.yaml | 4 ++-- web_src/js/features/common-global.js | 6 +++--- web_src/js/features/imagediff.js | 2 +- web_src/js/features/notification.js | 13 +++++++------ web_src/js/features/repo-editor.js | 8 ++++---- web_src/js/features/repo-issue-edit.js | 2 +- web_src/js/features/repo-issue.js | 14 +++++++------- web_src/js/features/repo-legacy.js | 6 +++--- web_src/js/features/repo-settings.js | 6 +++--- 9 files changed, 31 insertions(+), 30 deletions(-) diff --git a/.eslintrc.yaml b/.eslintrc.yaml index 3e4c6ea50b..24a0aa1907 100644 --- a/.eslintrc.yaml +++ b/.eslintrc.yaml @@ -321,7 +321,7 @@ rules: jquery/no-sizzle: [2] jquery/no-slide: [0] jquery/no-submit: [0] - jquery/no-text: [0] + jquery/no-text: [2] jquery/no-toggle: [2] jquery/no-trigger: [0] jquery/no-trim: [2] @@ -474,7 +474,7 @@ rules: no-jquery/no-slide: [2] no-jquery/no-sub: [2] no-jquery/no-support: [2] - no-jquery/no-text: [0] + no-jquery/no-text: [2] no-jquery/no-trigger: [0] no-jquery/no-trim: [2] no-jquery/no-type: [2] diff --git a/web_src/js/features/common-global.js b/web_src/js/features/common-global.js index e7db9b2336..71c1500d67 100644 --- a/web_src/js/features/common-global.js +++ b/web_src/js/features/common-global.js @@ -303,10 +303,10 @@ export function initGlobalLinkActions() { } const $dialog = $(`.delete.modal${filter}`); - $dialog.find('.name').text($this.data('name')); + $dialog.find('.name')[0].textContent = $this.data('name'); for (const [key, value] of Object.entries(dataArray)) { if (key && key.startsWith('data')) { - $dialog.find(`.${key}`).text(value); + $dialog.find(`.${key}`)[0].textContent = value; } } @@ -373,7 +373,7 @@ function initGlobalShowModal() { } else if ($attrTarget[0].matches('input, textarea')) { $attrTarget.val(attrib.value); // FIXME: add more supports like checkbox } else { - $attrTarget.text(attrib.value); // FIXME: it should be more strict here, only handle div/span/p + $attrTarget[0].textContent = attrib.value; // FIXME: it should be more strict here, only handle div/span/p } } diff --git a/web_src/js/features/imagediff.js b/web_src/js/features/imagediff.js index 192a642834..28ae4a50b7 100644 --- a/web_src/js/features/imagediff.js +++ b/web_src/js/features/imagediff.js @@ -92,7 +92,7 @@ export function initImageDiff() { return loadElem(img, info.path); })); // only the first images is associated with $boundsInfo - if (!success) info.$boundsInfo.text('(image error)'); + if (!success) info.$boundsInfo[0].textContent = '(image error)'; if (info.mime === 'image/svg+xml') { const resp = await GET(info.path); const text = await resp.text(); diff --git a/web_src/js/features/notification.js b/web_src/js/features/notification.js index 2de640e674..ce56de9604 100644 --- a/web_src/js/features/notification.js +++ b/web_src/js/features/notification.js @@ -47,16 +47,13 @@ async function receiveUpdateCount(event) { export function initNotificationCount() { const $notificationCount = $('.notification_count'); - - if (!$notificationCount.length) { - return; - } + if (!$notificationCount.length) return; let usingPeriodicPoller = false; const startPeriodicPoller = (timeout, lastCount) => { if (timeout <= 0 || !Number.isFinite(timeout)) return; usingPeriodicPoller = true; - lastCount = lastCount ?? $notificationCount.text(); + lastCount = lastCount ?? getCurrentCount(); setTimeout(async () => { await updateNotificationCountWithCallback(startPeriodicPoller, timeout, lastCount); }, timeout); @@ -120,8 +117,12 @@ export function initNotificationCount() { startPeriodicPoller(notificationSettings.MinTimeout); } +function getCurrentCount() { + return document.querySelector('.notification_count').textContent; +} + async function updateNotificationCountWithCallback(callback, timeout, lastCount) { - const currentCount = $('.notification_count').text(); + const currentCount = getCurrentCount(); if (lastCount !== currentCount) { callback(notificationSettings.MinTimeout, currentCount); return; diff --git a/web_src/js/features/repo-editor.js b/web_src/js/features/repo-editor.js index 01dc4b95aa..eade8aaea5 100644 --- a/web_src/js/features/repo-editor.js +++ b/web_src/js/features/repo-editor.js @@ -70,7 +70,7 @@ export function initRepoEditor() { hideElem('.quick-pull-branch-name'); document.querySelector('.quick-pull-branch-name input').required = false; } - $('#commit-button').text(this.getAttribute('button_text')); + $('#commit-button')[0].textContent = this.getAttribute('button_text'); }); const joinTreePath = ($fileNameEl) => { @@ -78,9 +78,9 @@ export function initRepoEditor() { $('.breadcrumb span.section').each(function () { const $element = $(this); if ($element.find('a').length) { - parts.push($element.find('a').text()); + parts.push($element.find('a')[0].textContent); } else { - parts.push($element.text()); + parts.push($element[0].textContent); } }); if ($fileNameEl.val()) parts.push($fileNameEl.val()); @@ -116,7 +116,7 @@ export function initRepoEditor() { if (e.code === 'Backspace' && getCursorPosition($(this)) === 0 && $section.length > 0) { e.preventDefault(); const $divider = $('.breadcrumb .breadcrumb-divider'); - const value = $section.last().find('a').text(); + const value = $section.last().find('a')[0].textContent; $(this).val(value + $(this).val()); this.setSelectionRange(value.length, value.length); $section.last().remove(); diff --git a/web_src/js/features/repo-issue-edit.js b/web_src/js/features/repo-issue-edit.js index 4c03325c7a..ef5a277c6b 100644 --- a/web_src/js/features/repo-issue-edit.js +++ b/web_src/js/features/repo-issue-edit.js @@ -183,7 +183,7 @@ export function initRepoIssueCommentEdit() { $(document).on('click', '.quote-reply', async function (event) { event.preventDefault(); const target = $(this).data('target'); - const quote = $(`#${target}`).text().replace(/\n/g, '\n> '); + const quote = $(`#${target}`)[0].textContent.replace(/\n/g, '\n> '); const content = `> ${quote}\n\n`; let editor; if ($(this).hasClass('quote-reply-diff')) { diff --git a/web_src/js/features/repo-issue.js b/web_src/js/features/repo-issue.js index 2b2eed58bb..9cd623b77e 100644 --- a/web_src/js/features/repo-issue.js +++ b/web_src/js/features/repo-issue.js @@ -281,7 +281,7 @@ export function initRepoPullRequestUpdate() { if (url) { const buttonText = pullUpdateButton.querySelector('.button-text'); if (buttonText) { - buttonText.textContent = $choice.text(); + buttonText.textContent = $choice[0].textContent; } pullUpdateButton.setAttribute('data-do', url); } @@ -566,7 +566,7 @@ export function initRepoIssueReferenceIssue() { // Reference issue $(document).on('click', '.reference-issue', function (event) { const $this = $(this); - const content = $(`#${$this.data('target')}`).text(); + const content = $(`#${$this.data('target')}`)[0].textContent; const poster = $this.data('poster-username'); const reference = toAbsoluteUrl($this.data('reference')); const $modal = $($this.data('modal')); @@ -603,8 +603,7 @@ export function initRepoIssueWipToggle() { async function pullrequest_targetbranch_change(update_url) { const targetBranch = $('#pull-target-branch').data('branch'); - const $branchTarget = $('#branch_target'); - if (targetBranch === $branchTarget.text()) { + if (targetBranch === $('#branch_target')[0].textContent) { window.location.reload(); return false; } @@ -640,8 +639,9 @@ export function initRepoIssueTitleEdit() { $('#cancel-edit-title').on('click', editTitleToggle); $('#save-edit-title').on('click', editTitleToggle).on('click', async function () { const pullrequest_target_update_url = this.getAttribute('data-target-update-url'); - if (!$editInput.val().length || $editInput.val() === $issueTitle.text()) { - $editInput.val($issueTitle.text()); + const titleText = $issueTitle[0].textContent; + if (!$editInput.val().length || $editInput.val() === titleText) { + $editInput.val(titleText); await pullrequest_targetbranch_change(pullrequest_target_update_url); } else { try { @@ -650,7 +650,7 @@ export function initRepoIssueTitleEdit() { const response = await POST(this.getAttribute('data-update-url'), {data: params}); const data = await response.json(); $editInput.val(data.title); - $issueTitle.text(data.title); + $issueTitle[0].textContent = data.title; if (pullrequest_target_update_url) { await pullrequest_targetbranch_change(pullrequest_target_update_url); // it will reload the window } else { diff --git a/web_src/js/features/repo-legacy.js b/web_src/js/features/repo-legacy.js index 18d98c891d..e855901f7a 100644 --- a/web_src/js/features/repo-legacy.js +++ b/web_src/js/features/repo-legacy.js @@ -64,7 +64,7 @@ export function initRepoCommentForm() { const editMode = $('#editing_mode').val(); $($(this).data('id-selector')).val(selectedValue); if ($isNewIssue) { - $selectBranch.find('.ui .branch-name').text($(this).data('name')); + $selectBranch.find('.ui .branch-name')[0].textContent = $(this).data('name'); return; } @@ -79,7 +79,7 @@ export function initRepoCommentForm() { console.error(error); } } else if (editMode === '') { - $selectBranch.find('.ui .branch-name').text(selectedValue); + $selectBranch.find('.ui .branch-name')[0].textContent = selectedValue; } }); $selectBranch.find('.reference.column').on('click', function () { @@ -275,7 +275,7 @@ export function initRepoCommentForm() { $list.find('.selected').html(` ${icon} - ${htmlEscape($(this).text())} + ${htmlEscape(this.textContent)} `); diff --git a/web_src/js/features/repo-settings.js b/web_src/js/features/repo-settings.js index 52c5de2bfa..f4fd94670b 100644 --- a/web_src/js/features/repo-settings.js +++ b/web_src/js/features/repo-settings.js @@ -22,12 +22,12 @@ export function initRepoSettingsCollaboration() { data.append('mode', value); await POST(el.getAttribute('data-url'), {data}); } catch { - $text.text('(error)'); // prevent from misleading users when error occurs + $text[0].textContent = '(error)'; // prevent from misleading users when error occurs el.setAttribute('data-last-value', lastValue); } }, onChange(_value, text, _$choice) { - $text.text(text); // update the text when using keyboard navigating + $text[0].textContent = text; // update the text when using keyboard navigating }, onHide() { // set to the really selected value, defer to next tick to make sure `action` has finished its work because the calling order might be onHide -> action @@ -36,7 +36,7 @@ export function initRepoSettingsCollaboration() { if ($item) { $dropdown.dropdown('set selected', el.getAttribute('data-last-value')); } else { - $text.text('(none)'); // prevent from misleading users when the access mode is undefined + $text[0].textContent = '(none)'; // prevent from misleading users when the access mode is undefined } }, 0); },