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 => (