Remove jQuery AJAX from common global functions (#29528)

- Removed all jQuery AJAX calls and replaced with our fetch wrapper
- Tested the locale change functionality and it works as before
- Tested the delete button functionality and it works as before

# Demo using `fetch` instead of jQuery AJAX

![action](https://github.com/go-gitea/gitea/assets/20454870/8a024f75-c2a5-4bff-898d-ca751d2489f1)

Signed-off-by: Yarden Shoham <git@yardenshoham.com>
(cherry picked from commit 8a0a83a1b53f55bcc710c3b229cba1c1bcf471c6)
This commit is contained in:
Yarden Shoham 2024-03-02 10:48:14 +02:00 committed by Earl Warren
parent ee6ff937c0
commit fcd055d74b
WARNING! Although there is a key with this ID in the database it does not verify this commit! This commit is SUSPICIOUS.
GPG key ID: 0579CB2928A78A00

View file

@ -11,7 +11,7 @@ import {htmlEscape} from 'escape-goat';
import {showTemporaryTooltip} from '../modules/tippy.js'; import {showTemporaryTooltip} from '../modules/tippy.js';
import {confirmModal} from './comp/ConfirmModal.js'; import {confirmModal} from './comp/ConfirmModal.js';
import {showErrorToast} from '../modules/toast.js'; import {showErrorToast} from '../modules/toast.js';
import {request, POST} from '../modules/fetch.js'; import {request, POST, GET} from '../modules/fetch.js';
import '../htmx.js'; import '../htmx.js';
const {appUrl, appSubUrl, csrfToken, i18n} = window.config; const {appUrl, appSubUrl, csrfToken, i18n} = window.config;
@ -37,11 +37,10 @@ export function initHeadNavbarContentToggle() {
} }
export function initFootLanguageMenu() { export function initFootLanguageMenu() {
function linkLanguageAction() { async function linkLanguageAction() {
const $this = $(this); const $this = $(this);
$.get($this.data('url')).always(() => { await GET($this.data('url'));
window.location.reload(); window.location.reload();
});
} }
$('.language-menu a[lang]').on('click', linkLanguageAction); $('.language-menu a[lang]').on('click', linkLanguageAction);
@ -309,27 +308,26 @@ export function initGlobalLinkActions() {
dialog.modal({ dialog.modal({
closable: false, closable: false,
onApprove() { onApprove: async () => {
if ($this.data('type') === 'form') { if ($this.data('type') === 'form') {
$($this.data('form')).trigger('submit'); $($this.data('form')).trigger('submit');
return; return;
} }
const postData = new FormData();
const postData = {
_csrf: csrfToken,
};
for (const [key, value] of Object.entries(dataArray)) { for (const [key, value] of Object.entries(dataArray)) {
if (key && key.startsWith('data')) { if (key && key.startsWith('data')) {
postData[key.slice(4)] = value; postData.append(key.slice(4), value);
} }
if (key === 'id') { if (key === 'id') {
postData['id'] = value; postData.append('id', value);
} }
} }
$.post($this.data('url'), postData).done((data) => { const response = await POST($this.data('url'), {data: postData});
if (response.ok) {
const data = await response.json();
window.location.href = data.redirect; window.location.href = data.redirect;
}); }
} }
}).modal('show'); }).modal('show');
} }