diff --git a/frontend/src/pages/Admin.jsx b/frontend/src/pages/Admin.jsx index 9bc9135..f7b85fb 100644 --- a/frontend/src/pages/Admin.jsx +++ b/frontend/src/pages/Admin.jsx @@ -110,7 +110,10 @@ export default function Admin({ isMobile = false }) { // 서버 관리 상태 const [isServerListExpanded, setIsServerListExpanded] = useState(false); // 서버 목록 펼침 상태 - const [selectedServer, setSelectedServer] = useState(null); // 선택된 서버 경로 + const [selectedServer, setSelectedServerState] = useState(() => { + // localStorage에서 선택된 서버 복원 + return localStorage.getItem('selectedMinecraftServer') || null; + }); const [servers, setServers] = useState([]); // 서버 목록 (API에서 가져옴) const [serverLoading, setServerLoading] = useState(false); // 서버 시작/종료 로딩 const [serverDialog, setServerDialog] = useState({ show: false, action: null, server: null }); // 시작/종료 확인 다이얼로그 @@ -860,6 +863,16 @@ export default function Admin({ isMobile = false }) { } }, []); // 의존성 없음 - 마운트 시에만 실행 + // 선택된 서버 설정 (localStorage에도 저장) + const setSelectedServer = (serverPath) => { + setSelectedServerState(serverPath); + if (serverPath) { + localStorage.setItem('selectedMinecraftServer', serverPath); + } else { + localStorage.removeItem('selectedMinecraftServer'); + } + }; + // 서버 목록 fetch const fetchServers = async () => { try { @@ -1581,11 +1594,14 @@ export default function Admin({ isMobile = false }) { {/* 서버 관리 */} {(() => { const runningServer = servers.find(s => s.running); - const otherServers = servers.filter(s => !s.running); + const selectedServerData = servers.find(s => s.path === selectedServer); + // 실행 중인 서버가 있으면 그것을, 없으면 선택된 서버를 표시 + const displayServer = runningServer || selectedServerData; + const isRunning = !!runningServer; return (
- {/* 헤더 - 실행 중인 서버 표시 */} + {/* 헤더 */}

🖥️ 서버 관리 @@ -1593,62 +1609,87 @@ export default function Admin({ isMobile = false }) { )}

- {runningServer && ( + {isRunning && (
- {runningServer.id} + 실행 중
)}
- {/* 실행 중인 서버가 있으면 상태 카드 표시 */} - {runningServer && ( -
+ {/* 선택된/실행 중인 서버 카드 */} + {displayServer ? ( +
-
-
+
+ {isRunning ? ( +
+ ) : ( +
+ )}
-

{runningServer.id}

+

{displayServer.id}

- - {runningServer.loader} + + {displayServer.loader} - {runningServer.path.split('/')[1]} + {displayServer.path.split('/')[1]}

+ ) : ( +
+

서버를 선택해주세요

+
)} {/* 서버 선택 (접힘/펼침) - 실행 중이면 비활성화 */} -
+
- {isServerListExpanded && !runningServer && ( + {isServerListExpanded && !isRunning && (
- {otherServers.length === 0 ? ( + {servers.length === 0 ? (

서버가 없습니다

) : ( - otherServers.map((server) => ( + servers.map((server) => ( )) )}
- - {/* 시작 버튼 */} - {selectedServer && ( -
- -
- )}
)}