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

This commit is contained in:
2026-02-10 01:05:07 +07:00
parent 7f2c4c3c8f
commit 3d3afa4d3e
+27 -19
View File
@@ -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">