diff --git a/frontend/src/ServerManager.jsx b/frontend/src/ServerManager.jsx index 9795dfd..1cd0fe5 100644 --- a/frontend/src/ServerManager.jsx +++ b/frontend/src/ServerManager.jsx @@ -630,6 +630,8 @@ function ServerManager() { setTimeout(() => setSuccess(''), 3000); }; + const gateways = Array.isArray(localServer.gateways) ? localServer.gateways : []; + return ( <> {error && ( @@ -1538,11 +1540,11 @@ function EditServerModal({ show, server, onChange, onSave, onClose }) { handleChange('tunnel', e.target.value)} /> - {NEEDS_GATEWAYS(localServer.type) && ( + {NEEDS_GATEWAYS(localServer.type) && ( <>
Шлюзы
- {(localServer.gateways || []).map((gw, idx) => ( + {gateways.map((gw, idx) => (
@@ -1634,14 +1636,18 @@ function EditServerModal({ show, server, onChange, onSave, onClose }) { type="button" className="btn btn-outline-primary btn-sm" onClick={() => { - setLocalServer((prev) => { - const list = Array.isArray(prev?.gateways) ? prev.gateways : []; - const nextList = [...list, makeGateway({ primary: list.length === 0 })]; - const next = { ...(prev || {}), gateways: nextList }; - onChange && onChange(next); - return next; - }); - }} + try { + setLocalServer((prev) => { + const list = Array.isArray(prev?.gateways) ? prev.gateways : []; + const nextList = [...list, makeGateway({ primary: list.length === 0 })]; + const next = { ...(prev || {}), gateways: nextList }; + onChange && onChange(next); + return next; + }); + } catch (e) { + console.error('Ошибка при добавлении шлюза в модалке редактирования', e); + } + }} > Добавить шлюз