Veiko Aasa 92aa66114c
users: Fix unable to delete user
Fixes an issue where confirming user deletion is not submitting the user
edit form.

Also fixes an issue where the user edit submit button is disabled after user
deletion confirmation is cancelled.

Fixes #2513.

Tests performed:
- Deleting a user works.
- All the users module tests pass.
- After cancelling the user deletion confirmation dialog, the user edit
  submit button is clickable.
- On the app pages, submit buttons are disabled when app enabling or disabling
is in progress.

Signed-off-by: Veiko Aasa <veiko17@disroot.org>
Reviewed-by: Sunil Mohan Adapa <sunil@medhas.org>
2025-04-15 12:02:15 -07:00

66 lines
2.3 KiB
JavaScript

// SPDX-License-Identifier: AGPL-3.0-or-later
/**
* @licstart The following is the entire license notice for the JavaScript
* code in this page.
*
* This file is part of FreedomBox.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* @licend The above is the entire license notice for the JavaScript code
* in this page.
*/
document.addEventListener('DOMContentLoaded', (event) => {
const form = document.querySelector('form.form-update');
form.addEventListener('submit', onUserUpdateSubmit);
const confirmDeleteButton = document.querySelector(
'#user-delete-confirm-dialog button.confirm');
confirmDeleteButton.addEventListener('click', () => {
onUserDeleteConfirmed(form);
});
var deleteConfirmed = false;
const modalEl = document.querySelector('#user-delete-confirm-dialog');
const modal = new bootstrap.Modal(modalEl);
// Make the user edit submit button clickable again when closing modal
modalEl.addEventListener('hide.bs.modal', clearButtonDisabling);
// Show the confirmation dialog if the delete checkbox is selected
function onUserUpdateSubmit(event) {
const deleteUserCheckbox = document.getElementById('id_delete');
if (!deleteUserCheckbox.checked) {
return;
}
if (deleteConfirmed) { // Deletion is already confirmed
deleteConfirmed = false;
return;
}
event.preventDefault();
modal.show();
};
// Submit the user edit form
function onUserDeleteConfirmed(form) {
deleteConfirmed = true;
modal.hide();
// Click instead of submit to disable the submission button
form.querySelector('input[type=submit]').click();
};
});