Enhance StatusBar and daemon connection management

- Added image preloading for quick access in StatusBar component
- Implemented a watcher to reload images when the menu changes
- Introduced a delay before sending 'setUserId' to ensure daemon readiness
- Improved logging for WebSocket close events and errors
This commit is contained in:
Torsten Schulz (local)
2025-11-17 16:19:43 +01:00
parent d13fe19198
commit d8b1efc3ca
2 changed files with 76 additions and 5 deletions

View File

@@ -299,17 +299,48 @@ const store = createStore({
state.daemonRetryTimer = null;
}
commit('setDaemonConnectionStatus', 'connected');
const payload = JSON.stringify({
event: 'setUserId',
data: { userId: state.user.id }
});
daemonSocket.send(payload);
// Warte kurz, bevor setUserId gesendet wird, damit der Daemon bereit ist
// Close-Code 1006 deutet darauf hin, dass der Daemon die Verbindung schließt,
// möglicherweise weil setUserId zu früh gesendet wird
setTimeout(() => {
try {
if (daemonSocket.readyState === WebSocket.OPEN && state.isLoggedIn && state.user) {
const payload = JSON.stringify({
event: 'setUserId',
data: { userId: state.user.id }
});
daemonSocket.send(payload);
console.log('[Daemon] setUserId gesendet für User:', state.user.id);
} else {
console.warn('[Daemon] Socket nicht mehr offen oder Benutzer nicht eingeloggt beim Senden von setUserId');
}
} catch (error) {
console.error('[Daemon] Fehler beim Senden von setUserId:', error);
}
}, 100); // 100ms Delay
};
daemonSocket.onclose = (event) => {
state.daemonConnecting = false;
commit('setDaemonConnectionStatus', 'disconnected');
// Detailliertes Logging für Close-Events
const closeCodeMessages = {
1000: 'Normal closure',
1001: 'Going away',
1002: 'Protocol error',
1003: 'Unsupported data',
1006: 'Abnormal closure (no close frame received)',
1007: 'Invalid data',
1008: 'Policy violation',
1009: 'Message too big',
1010: 'Extension error',
1011: 'Internal server error'
};
const closeMessage = closeCodeMessages[event.code] || `Unknown code: ${event.code}`;
console.warn(`[Daemon] Verbindung geschlossen - Code: ${event.code} (${closeMessage}), Reason: ${event.reason || 'none'}, WasClean: ${event.wasClean}, Opened: ${opened}`);
// Bereinige Socket-Referenz wenn Verbindung geschlossen wurde
if (state.daemonSocket === daemonSocket) {
state.daemonSocket = null;
@@ -331,6 +362,8 @@ const store = createStore({
state.daemonConnecting = false;
commit('setDaemonConnectionStatus', 'error');
console.error('[Daemon] WebSocket-Fehler:', error, 'ReadyState:', daemonSocket.readyState, 'URL:', daemonUrl);
// Bereinige Socket-Referenz bei Fehler
if (state.daemonSocket === daemonSocket) {
state.daemonSocket = null;