diff --git a/frontend/src/views/falukant/BranchView.vue b/frontend/src/views/falukant/BranchView.vue index 9072da8..60256ad 100644 --- a/frontend/src/views/falukant/BranchView.vue +++ b/frontend/src/views/falukant/BranchView.vue @@ -144,6 +144,19 @@ export default { RevenueSection, BuyVehicleDialog, }, + + watch: { + // Wenn sich der Daemon-Socket ändert (z.B. nach Login/Reconnect), + // Listener sauber entfernen/neu registrieren. + daemonSocket(newSocket, oldSocket) { + if (oldSocket) { + oldSocket.removeEventListener('message', this.handleDaemonMessage); + } + if (newSocket) { + newSocket.addEventListener('message', this.handleDaemonMessage); + } + } + }, data() { return { @@ -181,24 +194,9 @@ export default { } // Live-Socket-Events (Daemon WS) - [ - "production_ready", "stock_change", "price_update", - "director_death", "production_started", "selled_items", - "knowledge_update", "falukantUpdateStatus", "falukantBranchUpdate" - ].forEach(eventName => { - if (this.daemonSocket) { - this.daemonSocket.addEventListener('message', (event) => { - try { - const data = JSON.parse(event.data); - if (data.event === eventName) { - this.handleEvent(data); - } - } catch (error) { - // Ignore non-JSON messages like ping/pong - } - }); - } - }); + if (this.daemonSocket) { + this.daemonSocket.addEventListener('message', this.handleDaemonMessage); + } // Live-Socket-Events (Backend Socket.io) if (this.socket) { @@ -208,7 +206,10 @@ export default { }, beforeUnmount() { - // Daemon WebSocket wird automatisch beim Logout geschlossen + // Daemon WebSocket: Listener entfernen (der Socket selbst wird beim Logout geschlossen) + if (this.daemonSocket) { + this.daemonSocket.removeEventListener('message', this.handleDaemonMessage); + } if (this.socket) { this.socket.off('falukantUpdateStatus'); this.socket.off('falukantBranchUpdate');