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 [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() {
|
||||
<ServerAutocompleteInput
|
||||
label="Jumphost для бэкапов"
|
||||
placeholder="Выберите сервер Jumphost"
|
||||
servers={jumphostServers}
|
||||
value={selectedServer}
|
||||
onChange={setSelectedServer}
|
||||
servers={jumphostInputServers}
|
||||
value={selectedServerId}
|
||||
onChange={setSelectedServerId}
|
||||
size="sm"
|
||||
/>
|
||||
</div>
|
||||
<button
|
||||
type="button"
|
||||
className="btn btn-outline-primary btn-sm d-inline-flex align-items-center"
|
||||
onClick={() => selectedServer && fetchBackups(selectedServer.id || selectedServer.dns || selectedServer.ip)}
|
||||
disabled={!selectedServer || loadingBackups}
|
||||
onClick={() => selectedServerId && fetchBackups(selectedServerId)}
|
||||
disabled={!selectedServerId || loadingBackups}
|
||||
>
|
||||
<IconRefresh size={16} className="me-1" />
|
||||
Обновить список
|
||||
@@ -272,13 +284,9 @@ function MikrotikBackupsManager() {
|
||||
type="button"
|
||||
className="btn btn-primary btn-sm d-inline-flex align-items-center"
|
||||
onClick={async () => {
|
||||
if (!selectedServer) return;
|
||||
if (!selectedServerId) return;
|
||||
try {
|
||||
const serverId = selectedServer.id || selectedServer.dns || selectedServer.ip;
|
||||
if (!serverId) {
|
||||
notify.error('У выбранного сервера нет id/dns/ip для идентификации');
|
||||
return;
|
||||
}
|
||||
const serverId = selectedServerId;
|
||||
notify.info('Запуск ручного бэкапа MikroTik...');
|
||||
const res = await api.post('/mikrotik/backups/run', { serverId });
|
||||
if (res?.data?.ok) {
|
||||
@@ -296,7 +304,7 @@ function MikrotikBackupsManager() {
|
||||
notify.error(msg);
|
||||
}
|
||||
}}
|
||||
disabled={!selectedServer || loadingBackups}
|
||||
disabled={!selectedServerId || loadingBackups}
|
||||
>
|
||||
Создать бэкап сейчас
|
||||
</button>
|
||||
@@ -321,7 +329,7 @@ function MikrotikBackupsManager() {
|
||||
);
|
||||
|
||||
const currentServerLabel =
|
||||
selectedServer?.dns || selectedServer?.ip || selectedServer?.id || 'Не выбран';
|
||||
currentServer?.dns || currentServer?.ip || makeServerId(currentServer || {}) || 'Не выбран';
|
||||
|
||||
return (
|
||||
<div className="page">
|
||||
|
||||
Reference in New Issue
Block a user