From 9e40b5b7bea60e6802a4b448ef315b14fba4de7f Mon Sep 17 00:00:00 2001 From: 苏向夜 Date: Mon, 2 Mar 2026 10:26:21 +0800 Subject: feat(ui): java config --- packages/ui/src/components/bottom-bar.tsx | 19 ++---- packages/ui/src/components/ui/radio-group.tsx | 36 +++++++++++ packages/ui/src/models/java.ts | 25 ++++++++ packages/ui/src/pages/settings.tsx | 90 ++++++++++++++++++++++++++- packages/ui/vite.config.ts | 2 +- 5 files changed, 155 insertions(+), 17 deletions(-) create mode 100644 packages/ui/src/components/ui/radio-group.tsx create mode 100644 packages/ui/src/models/java.ts (limited to 'packages') diff --git a/packages/ui/src/components/bottom-bar.tsx b/packages/ui/src/components/bottom-bar.tsx index 5489675..0710c3a 100644 --- a/packages/ui/src/components/bottom-bar.tsx +++ b/packages/ui/src/components/bottom-bar.tsx @@ -6,7 +6,6 @@ import { listInstalledVersions, startGame } from "@/client"; import { cn } from "@/lib/utils"; import { useAuthStore } from "@/models/auth"; import { useInstanceStore } from "@/models/instance"; -import { useGameStore } from "@/stores/game-store"; import { LoginModal } from "./login-modal"; import { Button } from "./ui/button"; import { @@ -26,7 +25,6 @@ interface InstalledVersion { export function BottomBar() { const authStore = useAuthStore(); - const gameStore = useGameStore(); const instancesStore = useInstanceStore(); const [isLaunched, setIsLaunched] = useState(false); @@ -51,24 +49,18 @@ export function BottomBar() { const versions = await listInstalledVersions( instancesStore.activeInstance.id, ); - - const installed = versions || []; - setInstalledVersions(installed); + setInstalledVersions(versions); // If no version is selected but we have installed versions, select the first one - if (!gameStore.selectedVersion && installed.length > 0) { - gameStore.setSelectedVersion(installed[0].id); + if (!selectedVersion && versions.length > 0) { + setSelectedVersion(versions[0].id); } } catch (error) { console.error("Failed to load installed versions:", error); } finally { setIsLoadingVersions(false); } - }, [ - instancesStore.activeInstance, - gameStore.selectedVersion, - gameStore.setSelectedVersion, - ]); + }, [instancesStore.activeInstance, selectedVersion]); useEffect(() => { loadInstalledVersions(); @@ -225,6 +217,7 @@ export function BottomBar() { { + settings.merge({ + javaPath: e.target.value, + }); + }} + onBlur={() => { + settings.save(); + }} + /> + +
+ Java Installations + {javaStore.installations ? ( + { + settings.merge({ + javaPath: value, + }); + settings.save(); + }} + > + {javaStore.installations?.map((installation) => ( + + + + + {installation.vendor} ({installation.version}) + + + {installation.path} + + + + + + ))} + + ) : ( +
+ +
+ )} +
+ + diff --git a/packages/ui/vite.config.ts b/packages/ui/vite.config.ts index 27ce1ff..8c90267 100644 --- a/packages/ui/vite.config.ts +++ b/packages/ui/vite.config.ts @@ -1,6 +1,6 @@ +import path from "node:path"; import tailwindcss from "@tailwindcss/vite"; import react from "@vitejs/plugin-react"; -import path from "path"; import { defineConfig } from "vite"; // https://vite.dev/config/ -- cgit v1.2.3-70-g09d2