diff --git a/src/pages/EquipmentPage.tsx b/src/pages/EquipmentPage.tsx index d4a953f..c9e40aa 100644 --- a/src/pages/EquipmentPage.tsx +++ b/src/pages/EquipmentPage.tsx @@ -232,19 +232,25 @@ function DeviceForm({ .finally(() => setPrintersLoading(false)) } - // Загружаем порты когда выбирается COM + // Загружаем порты когда выбирается COM (availablePorts в deps чтобы не было stale closure) useEffect(() => { if (connection !== 'com' || !wsOnline || availablePorts !== null) return - loadPorts() - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [connection, wsOnline]) + setPortsLoading(true) + api.workstations.listPorts(slug, wsId) + .then(r => setAvailablePorts(r.ports)) + .catch(() => setAvailablePorts([])) + .finally(() => setPortsLoading(false)) + }, [connection, wsOnline, slug, wsId, availablePorts]) // Загружаем принтеры когда выбирается Windows useEffect(() => { if (connection !== 'windows' || !wsOnline || availablePrinters !== null) return - loadPrinters() - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [connection, wsOnline]) + setPrintersLoading(true) + api.workstations.listPrinters(slug, wsId) + .then(r => setAvailablePrinters(r.printers)) + .catch(() => setAvailablePrinters([])) + .finally(() => setPrintersLoading(false)) + }, [connection, wsOnline, slug, wsId, availablePrinters]) const handleSave = async () => { if (!name.trim()) return @@ -400,7 +406,6 @@ function DeviceForm({ { id: 'network', icon: , label: 'Сеть (TCP)' }, { id: 'windows', icon: , label: 'Windows принтер' }, { id: 'com', icon: , label: 'COM-порт' }, - { id: 'usb', icon: , label: 'USB' }, ] as const).map(c => (