refactor(MikrotikBackupsManager): rename selectedServer state to selectedServerId and update related logic for improved clarity and consistency
Publish Fast Tabler Docker image / build-and-push-fast (push) Successful in 3m23s
Publish Fast Tabler Docker image / build-and-push-fast (push) Successful in 3m23s
This commit is contained in:
@@ -44,7 +44,7 @@ function MikrotikBackupsManager() {
|
|||||||
const notify = useNotify();
|
const notify = useNotify();
|
||||||
|
|
||||||
const [servers, setServers] = useState([]);
|
const [servers, setServers] = useState([]);
|
||||||
const [selectedServer, setSelectedServer] = useState(null);
|
const [selectedServerId, setSelectedServerId] = useState('');
|
||||||
const [uiSettings, setUiSettings] = useState({});
|
const [uiSettings, setUiSettings] = useState({});
|
||||||
const [uiSettingsEtag, setUiSettingsEtag] = useState('');
|
const [uiSettingsEtag, setUiSettingsEtag] = useState('');
|
||||||
const [backupServerIds, setBackupServerIds] = useState(new Set());
|
const [backupServerIds, setBackupServerIds] = useState(new Set());
|
||||||
@@ -64,19 +64,31 @@ function MikrotikBackupsManager() {
|
|||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (selectedServer && selectedServer.id) {
|
if (selectedServerId) {
|
||||||
fetchBackups(selectedServer.id);
|
fetchBackups(selectedServerId);
|
||||||
} else {
|
} else {
|
||||||
setBackups([]);
|
setBackups([]);
|
||||||
setSelectedKeys([]);
|
setSelectedKeys([]);
|
||||||
}
|
}
|
||||||
}, [selectedServer]);
|
}, [selectedServerId]);
|
||||||
|
|
||||||
const jumphostServers = useMemo(
|
const jumphostServers = useMemo(
|
||||||
() => (servers || []).filter((s) => String(s.type || '').toLowerCase() === 'jumphost'),
|
() => (servers || []).filter((s) => String(s.type || '').toLowerCase() === 'jumphost'),
|
||||||
[servers],
|
[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 backupServerIdsList = useMemo(() => Array.from(backupServerIds), [backupServerIds]);
|
||||||
|
|
||||||
const fetchServers = async () => {
|
const fetchServers = async () => {
|
||||||
@@ -86,8 +98,8 @@ function MikrotikBackupsManager() {
|
|||||||
const list = Array.isArray(res.data) ? res.data : [];
|
const list = Array.isArray(res.data) ? res.data : [];
|
||||||
setServers(list);
|
setServers(list);
|
||||||
const firstJumphost = list.find((s) => String(s.type || '').toLowerCase() === 'jumphost');
|
const firstJumphost = list.find((s) => String(s.type || '').toLowerCase() === 'jumphost');
|
||||||
if (firstJumphost && !selectedServer) {
|
if (firstJumphost && !selectedServerId) {
|
||||||
setSelectedServer(firstJumphost);
|
setSelectedServerId(makeServerId(firstJumphost));
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error('Error fetching servers for backups:', err);
|
console.error('Error fetching servers for backups:', err);
|
||||||
@@ -253,17 +265,17 @@ function MikrotikBackupsManager() {
|
|||||||
<ServerAutocompleteInput
|
<ServerAutocompleteInput
|
||||||
label="Jumphost для бэкапов"
|
label="Jumphost для бэкапов"
|
||||||
placeholder="Выберите сервер Jumphost"
|
placeholder="Выберите сервер Jumphost"
|
||||||
servers={jumphostServers}
|
servers={jumphostInputServers}
|
||||||
value={selectedServer}
|
value={selectedServerId}
|
||||||
onChange={setSelectedServer}
|
onChange={setSelectedServerId}
|
||||||
size="sm"
|
size="sm"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
className="btn btn-outline-primary btn-sm d-inline-flex align-items-center"
|
className="btn btn-outline-primary btn-sm d-inline-flex align-items-center"
|
||||||
onClick={() => selectedServer && fetchBackups(selectedServer.id || selectedServer.dns || selectedServer.ip)}
|
onClick={() => selectedServerId && fetchBackups(selectedServerId)}
|
||||||
disabled={!selectedServer || loadingBackups}
|
disabled={!selectedServerId || loadingBackups}
|
||||||
>
|
>
|
||||||
<IconRefresh size={16} className="me-1" />
|
<IconRefresh size={16} className="me-1" />
|
||||||
Обновить список
|
Обновить список
|
||||||
@@ -272,13 +284,9 @@ function MikrotikBackupsManager() {
|
|||||||
type="button"
|
type="button"
|
||||||
className="btn btn-primary btn-sm d-inline-flex align-items-center"
|
className="btn btn-primary btn-sm d-inline-flex align-items-center"
|
||||||
onClick={async () => {
|
onClick={async () => {
|
||||||
if (!selectedServer) return;
|
if (!selectedServerId) return;
|
||||||
try {
|
try {
|
||||||
const serverId = selectedServer.id || selectedServer.dns || selectedServer.ip;
|
const serverId = selectedServerId;
|
||||||
if (!serverId) {
|
|
||||||
notify.error('У выбранного сервера нет id/dns/ip для идентификации');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
notify.info('Запуск ручного бэкапа MikroTik...');
|
notify.info('Запуск ручного бэкапа MikroTik...');
|
||||||
const res = await api.post('/mikrotik/backups/run', { serverId });
|
const res = await api.post('/mikrotik/backups/run', { serverId });
|
||||||
if (res?.data?.ok) {
|
if (res?.data?.ok) {
|
||||||
@@ -296,7 +304,7 @@ function MikrotikBackupsManager() {
|
|||||||
notify.error(msg);
|
notify.error(msg);
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
disabled={!selectedServer || loadingBackups}
|
disabled={!selectedServerId || loadingBackups}
|
||||||
>
|
>
|
||||||
Создать бэкап сейчас
|
Создать бэкап сейчас
|
||||||
</button>
|
</button>
|
||||||
@@ -321,7 +329,7 @@ function MikrotikBackupsManager() {
|
|||||||
);
|
);
|
||||||
|
|
||||||
const currentServerLabel =
|
const currentServerLabel =
|
||||||
selectedServer?.dns || selectedServer?.ip || selectedServer?.id || 'Не выбран';
|
currentServer?.dns || currentServer?.ip || makeServerId(currentServer || {}) || 'Не выбран';
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="page">
|
<div className="page">
|
||||||
|
|||||||
Reference in New Issue
Block a user