From 5ba3e4df4557feccf0c292c7a613ce23fa2183dc Mon Sep 17 00:00:00 2001 From: Claas Date: Fri, 15 Sep 2023 14:20:55 +0200 Subject: [PATCH] Remove event listeners when unmounted --- serial/src/lib/SerialPorts.svelte | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/serial/src/lib/SerialPorts.svelte b/serial/src/lib/SerialPorts.svelte index fa317de..0b7b730 100644 --- a/serial/src/lib/SerialPorts.svelte +++ b/serial/src/lib/SerialPorts.svelte @@ -8,26 +8,31 @@ let availablePorts: Map> = new Map(); - onMount(() => { - navigator.serial.addEventListener("connect", (event) => { - if (!isSerialPort(event.target)) return; + function addPort(event: Event) { + if (!isSerialPort(event.target)) return; + + availablePorts.set(event.target, event.target.getInfo()); + } + + function removePort(event: Event) { + if (!isSerialPort(event.target)) return; - console.log("connected", event.target, typeof event.target); - availablePorts.set(event.target, event.target.getInfo()); - }); + availablePorts.delete(event.target); + } + + onMount(() => { + navigator.serial.addEventListener("connect", addPort); - navigator.serial.addEventListener("disconnect", (event) => { - if (!isSerialPort(event.target)) return; + navigator.serial.addEventListener("disconnect", removePort); - console.log("disconnected", event.target); - availablePorts.delete(event.target); - }); - console.log("Event listener added"); + return () => { + navigator.serial.removeEventListener("connect", addPort); + navigator.serial.removeEventListener("disconnect", removePort); + }; }); navigator.serial.getPorts().then((ports) => { availablePorts = new Map(ports.map((port) => [port, port.getInfo()])); - ports.forEach((port) => console.info("Port:", port.getInfo())); }); // Known working usb devices -- 2.51.2