From 2aac641cd3ec86abb9a9c862b26fe2bb3e848ceb Mon Sep 17 00:00:00 2001 From: Denis Shatskiy Date: Thu, 10 Jul 2025 08:41:32 +0700 Subject: [PATCH] feat: Implement edit server modal in ServerManager for improved server management --- frontend/src/ServerManager.jsx | 93 +++++++++++++++++++++++++++------- 1 file changed, 74 insertions(+), 19 deletions(-) diff --git a/frontend/src/ServerManager.jsx b/frontend/src/ServerManager.jsx index d7bd06f..e8feb15 100644 --- a/frontend/src/ServerManager.jsx +++ b/frontend/src/ServerManager.jsx @@ -47,6 +47,9 @@ function ServerManager() { const editInputRef = useRef(null); const pageSize = 10; + const [editModalOpen, setEditModalOpen] = useState(false); + const [editModalServer, setEditModalServer] = useState(null); + useEffect(() => { fetchServers(); }, []); @@ -76,16 +79,23 @@ function ServerManager() { }; const handleEdit = (server) => { - setEditingServer(server.ip); - setEditingValues({ ...server }); + setEditModalServer({ ...server }); + setEditModalOpen(true); }; - const handleSaveEdit = (serverIp) => { - const updatedServers = servers.map(s => - s.ip === serverIp ? { ...s, ...editingValues } : s - ); - setServers(updatedServers); - setEditingServer(null); + const handleEditModalChange = (updatedServer) => { + setEditModalServer(updatedServer); + }; + + const handleEditModalSave = () => { + setServers(servers.map(s => s.ip === editModalServer.ip ? { ...editModalServer } : s)); + setEditModalOpen(false); + setEditModalServer(null); + }; + + const handleEditModalClose = () => { + setEditModalOpen(false); + setEditModalServer(null); }; const handleCancelEdit = () => { @@ -476,17 +486,8 @@ function ServerManager() { {server.provider} {server.tunnel} - {editingServer === server.ip ? ( - <> - - - - ) : ( - <> - - - - )} + + ))} @@ -540,8 +541,62 @@ function ServerManager() { )} + + {/* Edit Server Modal */} + ); } +// Модальное окно для редактирования сервера +function EditServerModal({ show, server, onChange, onSave, onClose }) { + if (!show || !server) return null; + return ( +
+
+
+
+
Редактировать сервер
+ +
+
+
{ e.preventDefault(); onSave(); }}> +
+ + onChange({ ...server, ip: e.target.value })} /> +
+
+ + onChange({ ...server, dns: e.target.value })} /> +
+
+ + onChange({ ...server, country: e.target.value })} /> +
+
+ + onChange({ ...server, provider: e.target.value })} /> +
+
+ + onChange({ ...server, tunnel: e.target.value })} /> +
+
+
+
+ + +
+
+
+
+ ); +} + export default ServerManager; \ No newline at end of file