Browse Source

Auto-connect and disconnect devices

pull/110/head
Malte Grimm 3 years ago
parent
commit
4899cb8cc4
  1. 21
      src/App.tsx

21
src/App.tsx

@ -21,9 +21,9 @@ import { randId } from './core/utils/randId';
let ensureOnce = false; let ensureOnce = false;
export const App = (): JSX.Element => { export const App = (): JSX.Element => {
const { getDevice } = useDeviceStore(); const { getDevice, getDevices, removeDevice } = useDeviceStore();
const { addDevice } = useDeviceStore(); const { addDevice } = useDeviceStore();
const { selectedDevice, setConnectDialogOpen, connectDialogOpen } = const { selectedDevice, setConnectDialogOpen, connectDialogOpen, setSelectedDevice } =
useAppStore(); useAppStore();
const [initialized, setInitialized] = useState(false); const [initialized, setInitialized] = useState(false);
@ -46,6 +46,23 @@ export const App = (): JSX.Element => {
}; };
const connectToAll = async () => { const connectToAll = async () => {
const dev = await navigator.serial.getPorts(); const dev = await navigator.serial.getPorts();
navigator.serial.onconnect = (ev) => {
const port = ev.target as SerialPort;
if(port.readable === null)
onConnect(port);
};
navigator.serial.ondisconnect = (ev) => {
const port = ev.target as SerialPort;
const device = getDevices().filter(d => d.connection?.connType == 'serial');
const d = device.find(d => (d.connection! as ISerialConnection).getCurrentPort() == port);
if(!d)
return;
d.connection!.disconnect();
removeDevice(d.id ?? 0);
if(selectedDevice == d.id)
setSelectedDevice(0);
}
dev.filter(d => d.readable === null).forEach(d => onConnect(d)); dev.filter(d => d.readable === null).forEach(d => onConnect(d));
}; };
if(!initialized && !ensureOnce) { if(!initialized && !ensureOnce) {

Loading…
Cancel
Save