@@ -49,6 +49,7 @@ import {
4949import ForgotPasswordModal from "./components/ForgotPasswordModal" ;
5050import ConfirmationModal from "./components/ConfirmationModal" ;
5151import { useRouter } from "next/navigation" ;
52+ import LaunchServerModal from "./components/LaunchServerModal" ;
5253
5354const DEFAULT_TAGLINE =
5455 "Welcome to OpenFusion.\nSelect a server from the list below to get started." ;
@@ -70,7 +71,7 @@ export default function Home() {
7071 const [ servers , setServers ] = useState < ServerEntry [ ] > ( [ ] ) ;
7172 const [ versions , setVersions ] = useState < VersionEntry [ ] > ( [ ] ) ;
7273
73- const [ selectedIdx , setSelectedIdx ] = useState < number > ( - 1 ) ;
74+ const [ selectedServerUuid , setSelectedServerUuid ] = useState < string > ( ) ;
7475 const [ currentSession , setCurrentSession ] = useState <
7576 LoginSession | undefined
7677 > ( undefined ) ;
@@ -82,6 +83,7 @@ export default function Home() {
8283 const [ addServerDetails , setAddServerDetails ] = useState < NewServerDetails > ( ) ;
8384 const [ showEditModal , setShowEditModal ] = useState ( false ) ;
8485 const [ showDeleteModal , setShowDeleteModal ] = useState ( false ) ;
86+ const [ showLaunchModal , setShowLaunchModal ] = useState ( false ) ;
8587
8688 const [ showLoginModal , setShowLoginModal ] = useState ( false ) ;
8789 const [ showForgotPasswordModal , setShowForgotPasswordModal ] = useState ( false ) ;
@@ -107,22 +109,17 @@ export default function Home() {
107109 setShowAddModal ( true ) ;
108110 } ;
109111
112+ const openLaunchServer = ( uuid : string ) => {
113+ setSelectedServer ( uuid ) ;
114+ setShowLaunchModal ( true ) ;
115+ } ;
116+
110117 const getSelectedServer = ( ) => {
111- if ( selectedIdx >= 0 && selectedIdx < servers . length ) {
112- return servers [ selectedIdx ] ;
113- }
114- return undefined ;
118+ return servers . find ( ( server ) => server . uuid == selectedServerUuid ) ;
115119 } ;
116120
117121 const setSelectedServer = ( uuid ?: string ) => {
118- if ( uuid ) {
119- const idx = servers . findIndex ( ( server ) => server . uuid == uuid ) ;
120- if ( idx >= 0 ) {
121- setSelectedIdx ( idx ) ;
122- }
123- } else {
124- setSelectedIdx ( - 1 ) ;
125- }
122+ setSelectedServerUuid ( uuid ) ;
126123 setCurrentSession ( undefined ) ;
127124 } ;
128125
@@ -275,17 +272,6 @@ export default function Home() {
275272 if ( e . key === "Escape" ) {
276273 setSelectedServer ( undefined ) ;
277274 }
278-
279- // Server selector controls
280- // const modulo = servers.length;
281- // if (e.key === "ArrowUp" || e.key === "ArrowLeft") {
282- // const newIdx = (selectedIdx <= 0 ? modulo - 1 : (selectedIdx - 1));
283- // setSelectedIdx(newIdx);
284- // }
285- // if (e.key === "ArrowDown" || e.key === "ArrowRight") {
286- // const newIdx = (selectedIdx + 1) % modulo;
287- // setSelectedIdx(newIdx);
288- // }
289275 } ;
290276
291277 const doInit = async ( ) => {
@@ -533,6 +519,13 @@ export default function Home() {
533519 }
534520 } ;
535521
522+ const launchServer = async ( serverUuid ?: string ) => {
523+ if ( serverUuid ) {
524+ setConnecting ( true ) ;
525+ onConnect ( serverUuid ) ;
526+ }
527+ } ;
528+
536529 const sendOneTimePassword = async ( email : string ) => {
537530 try {
538531 await invoke ( "send_otp" , {
@@ -585,7 +578,10 @@ export default function Home() {
585578 for ( const activation of pending ) {
586579 switch ( activation . type ) {
587580 case "add_server" :
588- openAddServer ( activation . details ) ;
581+ openAddServer ( activation . payload ) ;
582+ break ;
583+ case "show_existing_server" :
584+ openLaunchServer ( activation . payload ) ;
589585 break ;
590586 }
591587 }
@@ -616,7 +612,7 @@ export default function Home() {
616612 return ( ) => {
617613 window . removeEventListener ( "keydown" , handleKeydown ) ;
618614 } ;
619- } , [ servers , selectedIdx ] ) ;
615+ } , [ servers , selectedServerUuid ] ) ;
620616
621617 // Padding for custom titlebar
622618 useEffect ( ( ) => {
@@ -758,6 +754,12 @@ export default function Home() {
758754 setShow = { setShowDeleteModal }
759755 deleteServer = { deleteServer }
760756 />
757+ < LaunchServerModal
758+ server = { getSelectedServer ( ) }
759+ show = { showLaunchModal }
760+ setShow = { setShowLaunchModal }
761+ launchServer = { launchServer }
762+ />
761763 < LoginModal
762764 server = { getSelectedServer ( ) }
763765 show = { showLoginModal }
0 commit comments