diff --git a/frontend/src/MikrotikBackupsManager.jsx b/frontend/src/MikrotikBackupsManager.jsx index 2412ea2..75608ea 100644 --- a/frontend/src/MikrotikBackupsManager.jsx +++ b/frontend/src/MikrotikBackupsManager.jsx @@ -44,7 +44,7 @@ function MikrotikBackupsManager() { const notify = useNotify(); const [servers, setServers] = useState([]); - const [selectedServer, setSelectedServer] = useState(null); + const [selectedServerId, setSelectedServerId] = useState(''); const [uiSettings, setUiSettings] = useState({}); const [uiSettingsEtag, setUiSettingsEtag] = useState(''); const [backupServerIds, setBackupServerIds] = useState(new Set()); @@ -64,19 +64,31 @@ function MikrotikBackupsManager() { }, []); useEffect(() => { - if (selectedServer && selectedServer.id) { - fetchBackups(selectedServer.id); + if (selectedServerId) { + fetchBackups(selectedServerId); } else { setBackups([]); setSelectedKeys([]); } - }, [selectedServer]); + }, [selectedServerId]); const jumphostServers = useMemo( () => (servers || []).filter((s) => String(s.type || '').toLowerCase() === 'jumphost'), [servers], ); + const makeServerId = (s) => (s.id || s.dns || s.ip || '').toString(); + + const jumphostInputServers = useMemo( + () => jumphostServers.map((s) => ({ ...s, id: makeServerId(s) })), + [jumphostServers], + ); + + const currentServer = useMemo( + () => jumphostServers.find((s) => makeServerId(s) === selectedServerId) || null, + [jumphostServers, selectedServerId], + ); + const backupServerIdsList = useMemo(() => Array.from(backupServerIds), [backupServerIds]); const fetchServers = async () => { @@ -86,8 +98,8 @@ function MikrotikBackupsManager() { const list = Array.isArray(res.data) ? res.data : []; setServers(list); const firstJumphost = list.find((s) => String(s.type || '').toLowerCase() === 'jumphost'); - if (firstJumphost && !selectedServer) { - setSelectedServer(firstJumphost); + if (firstJumphost && !selectedServerId) { + setSelectedServerId(makeServerId(firstJumphost)); } } catch (err) { console.error('Error fetching servers for backups:', err); @@ -253,17 +265,17 @@ function MikrotikBackupsManager() { @@ -321,7 +329,7 @@ function MikrotikBackupsManager() { ); const currentServerLabel = - selectedServer?.dns || selectedServer?.ip || selectedServer?.id || 'Не выбран'; + currentServer?.dns || currentServer?.ip || makeServerId(currentServer || {}) || 'Не выбран'; return (