📚 Improved printer management system & session handling 🚀

This commit is contained in:
2025-05-30 22:13:46 +02:00
parent 498078590b
commit f2bd44a718
5 changed files with 255 additions and 240 deletions

View File

@@ -161,14 +161,26 @@ class PrinterMonitor {
// Drucker-Daten aktualisieren
this.printers.clear();
Object.values(data.printers).forEach(printer => {
this.printers.set(printer.id, {
...printer,
statusInfo: this.statusCategories[printer.status] || this.statusCategories['offline']
// Null-Check für data.printers hinzufügen
if (data && data.printers && typeof data.printers === 'object') {
Object.values(data.printers).forEach(printer => {
this.printers.set(printer.id, {
...printer,
statusInfo: this.statusCategories[printer.status] || this.statusCategories['offline']
});
});
});
} else {
console.warn('⚠️ Keine gültigen Drucker-Daten erhalten:', data);
// Benachrichtige Callbacks über Fehler
this.notifyCallbacks({
type: 'error',
message: 'Ungültige Drucker-Daten erhalten',
data: data
});
return;
}
this.lastUpdate = new Date(data.timestamp);
this.lastUpdate = new Date(data.timestamp || Date.now());
// Änderungen erkennen und benachrichtigen
const changes = this.detectChanges(previousPrinters, this.printers);

View File

@@ -109,9 +109,9 @@ class SessionManager {
'X-Requested-With': 'XMLHttpRequest'
};
// CSRF-Token hinzufügen wenn verfügbar
// CSRF-Token hinzufügen wenn verfügbar - Flask-WTF erwartet X-CSRFToken oder den Token im Body
if (csrfToken) {
headers['X-CSRF-Token'] = csrfToken;
headers['X-CSRFToken'] = csrfToken;
}
const response = await fetch('/api/session/heartbeat', {
@@ -119,7 +119,8 @@ class SessionManager {
headers: headers,
body: JSON.stringify({
timestamp: new Date().toISOString(),
page: window.location.pathname
page: window.location.pathname,
csrf_token: csrfToken // Zusätzlich im Body senden
})
});