js: remove outdated local storage data

Remove the invalid keys from local storage when the page loads.
Creating and deleting elements from the sidebar accumulates
dead entries in the local storage.
master
Alejandro Sirgo Rica 2024-09-16 17:11:30 +02:00
parent 053519beae
commit 7296372e9c
2 changed files with 25 additions and 2 deletions

View File

@ -89,9 +89,28 @@ function setParentStatus(checkboxes) {
});
}
function deleteInvalidStorageItems(items, context) {
const existingIds = items.map(function() {
return context + this.id;
}).get();
for (let i = 0; i < localStorage.length; i++) {
const key = localStorage.key(i);
if (!key.startsWith(context)) {
continue;
}
if (!existingIds.includes(key)) {
localStorage.removeItem(key);
}
}
}
function configureCommandCheckboxes(context) {
const checkboxes = $('input:checkbox[form="scopesForm"]');
deleteInvalidStorageItems(checkboxes, context);
// Ensure the form fields are sent
$('#scopesForm').on('submit', function() {
checkboxes.each(function() {
@ -141,9 +160,11 @@ function keepSelectedClients(context) {
const checkboxes = $('#sidebar input:checkbox')
checkboxes.on('change', function (event) {
storeCheckboxStatus(this, context);
storeCheckboxStatus(this, context);
});
deleteInvalidStorageItems(checkboxes, context);
checkboxes.each(function () {
if (localStorage.getItem(context + this.id) == 'check') {
this.checked = true;
@ -310,6 +331,8 @@ function checkFolderParent(context) {
function limitCheckboxes(context) {
const checkboxes = $('#sidebar input:checkbox');
deleteInvalidStorageItems(checkboxes, context);
checkboxes.on('change', function () {
const currentCheckbox = $(this);
const currentParentRoom = currentCheckbox.attr('data-parent-room');

View File

@ -111,7 +111,7 @@
<!-- ChartJS -->
<script src="{{ url_for('static', filename='AdminLTE/plugins/chart.js/Chart.min.js') }}"></script>
<script src="{{ url_for('static', filename='js/ogcp.js') }}?v=21"></script>
<script src="{{ url_for('static', filename='js/ogcp.js') }}?v=22"></script>
<script>
// error messages