Fix: Add safe localStorage wrapper and QZ Tray toggle feature

- Created storage-utils.js with safeStorage wrapper to prevent tracking prevention errors
- Updated script.js to use safeStorage for theme persistence
- Added conditional QZ Tray connection based on 'Enable Scan to Boxes' toggle
- Fixed 404 error by removing non-existent /api/backup/path endpoint call
- Enhanced fg_scan.html to disable QZ Tray and socket connections when toggle is off
- Prevents console errors when browser tracking prevention blocks localStorage access
This commit is contained in:
Quality App System
2026-01-15 19:26:42 +02:00
parent 13d93d8a14
commit 95383e36f2
4 changed files with 75 additions and 23 deletions

View File

@@ -1,3 +1,29 @@
// Safe localStorage wrapper to handle tracking prevention
const safeStorage = {
getItem: function(key) {
try {
return localStorage.getItem(key);
} catch (e) {
console.warn('localStorage access blocked:', e);
return null;
}
},
setItem: function(key, value) {
try {
localStorage.setItem(key, value);
} catch (e) {
console.warn('localStorage access blocked:', e);
}
},
removeItem: function(key) {
try {
localStorage.removeItem(key);
} catch (e) {
console.warn('localStorage access blocked:', e);
}
}
};
document.addEventListener('DOMContentLoaded', () => {
const reportButtons = document.querySelectorAll('.report-btn');
const reportTitle = document.getElementById('report-title');
@@ -17,7 +43,7 @@ document.addEventListener('DOMContentLoaded', () => {
}
// Check and apply the saved theme from localStorage
const savedTheme = localStorage.getItem('theme');
const savedTheme = safeStorage.getItem('theme');
if (savedTheme) {
body.classList.toggle('dark-mode', savedTheme === 'dark');
}
@@ -28,7 +54,7 @@ document.addEventListener('DOMContentLoaded', () => {
// Toggle the theme on button click
themeToggleButton.addEventListener('click', () => {
const isDarkMode = body.classList.toggle('dark-mode');
localStorage.setItem('theme', isDarkMode ? 'dark' : 'light');
safeStorage.setItem('theme', isDarkMode ? 'dark' : 'light');
updateThemeToggleButtonText(); // Update the button text after toggling
});