From 66668d85d603c5841d755a6023aa1925559fc6d4 Mon Sep 17 00:00:00 2001 From: 苏向夜 Date: Wed, 25 Feb 2026 01:32:51 +0800 Subject: chore(workspace): replace legacy codes --- packages/ui-new/src/components/bottom-bar.tsx | 231 --------- packages/ui-new/src/components/config-editor.tsx | 111 ----- .../ui-new/src/components/download-monitor.tsx | 62 --- packages/ui-new/src/components/game-console.tsx | 290 ----------- .../src/components/instance-creation-modal.tsx | 552 --------------------- .../src/components/instance-editor-modal.tsx | 548 -------------------- packages/ui-new/src/components/login-modal.tsx | 188 ------- .../ui-new/src/components/particle-background.tsx | 63 --- packages/ui-new/src/components/sidebar.tsx | 185 ------- packages/ui-new/src/components/ui/avatar.tsx | 107 ---- packages/ui-new/src/components/ui/badge.tsx | 52 -- packages/ui-new/src/components/ui/button.tsx | 56 --- packages/ui-new/src/components/ui/card.tsx | 103 ---- packages/ui-new/src/components/ui/checkbox.tsx | 27 - packages/ui-new/src/components/ui/dialog.tsx | 155 ------ .../ui-new/src/components/ui/dropdown-menu.tsx | 269 ---------- packages/ui-new/src/components/ui/field.tsx | 238 --------- packages/ui-new/src/components/ui/input.tsx | 20 - packages/ui-new/src/components/ui/label.tsx | 19 - packages/ui-new/src/components/ui/scroll-area.tsx | 53 -- packages/ui-new/src/components/ui/select.tsx | 199 -------- packages/ui-new/src/components/ui/separator.tsx | 25 - packages/ui-new/src/components/ui/sonner.tsx | 43 -- packages/ui-new/src/components/ui/spinner.tsx | 10 - packages/ui-new/src/components/ui/switch.tsx | 32 -- packages/ui-new/src/components/ui/tabs.tsx | 80 --- packages/ui-new/src/components/ui/textarea.tsx | 18 - packages/ui-new/src/components/user-avatar.tsx | 23 - 28 files changed, 3759 deletions(-) delete mode 100644 packages/ui-new/src/components/bottom-bar.tsx delete mode 100644 packages/ui-new/src/components/config-editor.tsx delete mode 100644 packages/ui-new/src/components/download-monitor.tsx delete mode 100644 packages/ui-new/src/components/game-console.tsx delete mode 100644 packages/ui-new/src/components/instance-creation-modal.tsx delete mode 100644 packages/ui-new/src/components/instance-editor-modal.tsx delete mode 100644 packages/ui-new/src/components/login-modal.tsx delete mode 100644 packages/ui-new/src/components/particle-background.tsx delete mode 100644 packages/ui-new/src/components/sidebar.tsx delete mode 100644 packages/ui-new/src/components/ui/avatar.tsx delete mode 100644 packages/ui-new/src/components/ui/badge.tsx delete mode 100644 packages/ui-new/src/components/ui/button.tsx delete mode 100644 packages/ui-new/src/components/ui/card.tsx delete mode 100644 packages/ui-new/src/components/ui/checkbox.tsx delete mode 100644 packages/ui-new/src/components/ui/dialog.tsx delete mode 100644 packages/ui-new/src/components/ui/dropdown-menu.tsx delete mode 100644 packages/ui-new/src/components/ui/field.tsx delete mode 100644 packages/ui-new/src/components/ui/input.tsx delete mode 100644 packages/ui-new/src/components/ui/label.tsx delete mode 100644 packages/ui-new/src/components/ui/scroll-area.tsx delete mode 100644 packages/ui-new/src/components/ui/select.tsx delete mode 100644 packages/ui-new/src/components/ui/separator.tsx delete mode 100644 packages/ui-new/src/components/ui/sonner.tsx delete mode 100644 packages/ui-new/src/components/ui/spinner.tsx delete mode 100644 packages/ui-new/src/components/ui/switch.tsx delete mode 100644 packages/ui-new/src/components/ui/tabs.tsx delete mode 100644 packages/ui-new/src/components/ui/textarea.tsx delete mode 100644 packages/ui-new/src/components/user-avatar.tsx (limited to 'packages/ui-new/src/components') diff --git a/packages/ui-new/src/components/bottom-bar.tsx b/packages/ui-new/src/components/bottom-bar.tsx deleted file mode 100644 index 32eb852..0000000 --- a/packages/ui-new/src/components/bottom-bar.tsx +++ /dev/null @@ -1,231 +0,0 @@ -import { listen, type UnlistenFn } from "@tauri-apps/api/event"; -import { Play, User } from "lucide-react"; -import { useCallback, useEffect, useMemo, useState } from "react"; -import { toast } from "sonner"; -import { listInstalledVersions, startGame } from "@/client"; -import { cn } from "@/lib/utils"; -import { useAuthStore } from "@/models/auth"; -import { useInstancesStore } from "@/models/instances"; -import { useGameStore } from "@/stores/game-store"; -import { LoginModal } from "./login-modal"; -import { Button } from "./ui/button"; -import { - Select, - SelectContent, - SelectGroup, - SelectItem, - SelectTrigger, - SelectValue, -} from "./ui/select"; - -interface InstalledVersion { - id: string; - type: string; -} - -export function BottomBar() { - const authStore = useAuthStore(); - const gameStore = useGameStore(); - const instancesStore = useInstancesStore(); - - const [selectedVersion, setSelectedVersion] = useState(null); - const [installedVersions, setInstalledVersions] = useState< - InstalledVersion[] - >([]); - const [isLoadingVersions, setIsLoadingVersions] = useState(true); - const [showLoginModal, setShowLoginModal] = useState(false); - - const loadInstalledVersions = useCallback(async () => { - if (!instancesStore.activeInstance) { - setInstalledVersions([]); - setIsLoadingVersions(false); - return; - } - - setIsLoadingVersions(true); - try { - const versions = await listInstalledVersions( - instancesStore.activeInstance.id, - ); - - const installed = versions || []; - setInstalledVersions(installed); - - // 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); - } - } catch (error) { - console.error("Failed to load installed versions:", error); - } finally { - setIsLoadingVersions(false); - } - }, [ - instancesStore.activeInstance, - gameStore.selectedVersion, - gameStore.setSelectedVersion, - ]); - - useEffect(() => { - loadInstalledVersions(); - - // Listen for backend events that should refresh installed versions. - let unlistenDownload: UnlistenFn | null = null; - let unlistenVersionDeleted: UnlistenFn | null = null; - - (async () => { - try { - unlistenDownload = await listen("download-complete", () => { - loadInstalledVersions(); - }); - } catch (err) { - // best-effort: do not break UI if listening fails - // eslint-disable-next-line no-console - console.warn("Failed to attach download-complete listener:", err); - } - - try { - unlistenVersionDeleted = await listen("version-deleted", () => { - loadInstalledVersions(); - }); - } catch (err) { - // eslint-disable-next-line no-console - console.warn("Failed to attach version-deleted listener:", err); - } - })(); - - return () => { - try { - if (unlistenDownload) unlistenDownload(); - } catch { - // ignore - } - try { - if (unlistenVersionDeleted) unlistenVersionDeleted(); - } catch { - // ignore - } - }; - }, [loadInstalledVersions]); - - const handleStartGame = async () => { - if (!selectedVersion) { - toast.info("Please select a version!"); - return; - } - - if (!instancesStore.activeInstance) { - toast.info("Please select an instance first!"); - return; - } - // await gameStore.startGame( - // authStore.currentAccount, - // authStore.openLoginModal, - // instancesStore.activeInstanceId, - // uiStore.setView, - // ); - await startGame(instancesStore.activeInstance?.id, selectedVersion); - }; - - const getVersionTypeColor = (type: string) => { - switch (type) { - case "release": - return "bg-emerald-500"; - case "snapshot": - return "bg-amber-500"; - case "old_beta": - return "bg-rose-500"; - case "old_alpha": - return "bg-violet-500"; - default: - return "bg-gray-500"; - } - }; - - const versionOptions = useMemo( - () => - installedVersions.map((v) => ({ - label: `${v.id}${v.type !== "release" ? ` (${v.type})` : ""}`, - value: v.id, - type: v.type, - })), - [installedVersions], - ); - - return ( -
-
-
-
-
- - Active Instance - - - {instancesStore.activeInstance?.name || "No instance selected"} - -
- - -
- -
- {authStore.account ? ( - - ) : ( - - )} -
-
-
- - setShowLoginModal(false)} - /> -
- ); -} diff --git a/packages/ui-new/src/components/config-editor.tsx b/packages/ui-new/src/components/config-editor.tsx deleted file mode 100644 index 129b8f7..0000000 --- a/packages/ui-new/src/components/config-editor.tsx +++ /dev/null @@ -1,111 +0,0 @@ -import type React from "react"; -import { useEffect, useState } from "react"; -import { type ZodType, z } from "zod"; -import { useSettingsStore } from "@/models/settings"; -import type { LauncherConfig } from "@/types"; -import { Button } from "./ui/button"; -import { - Dialog, - DialogContent, - DialogDescription, - DialogFooter, - DialogHeader, - DialogTitle, -} from "./ui/dialog"; -import { FieldError } from "./ui/field"; -import { Spinner } from "./ui/spinner"; -import { Textarea } from "./ui/textarea"; - -const launcherConfigSchema: ZodType = z.object({ - minMemory: z.number(), - maxMemory: z.number(), - javaPath: z.string(), - width: z.number(), - height: z.number(), - downloadThreads: z.number(), - customBackgroundPath: z.string().nullable(), - enableGpuAcceleration: z.boolean(), - enableVisualEffects: z.boolean(), - activeEffect: z.string(), - theme: z.string(), - logUploadService: z.string(), - pastebinApiKey: z.string().nullable(), - assistant: z.any(), // TODO: AssistantConfig schema - useSharedCaches: z.boolean(), - keepLegacyPerInstanceStorage: z.boolean(), - featureFlags: z.any(), // TODO: FeatureFlags schema -}); - -export interface ConfigEditorProps - extends Omit, "onOpenChange"> { - open: boolean; - onOpenChange: (open: boolean) => void; -} - -export function ConfigEditor({ onOpenChange, ...props }: ConfigEditorProps) { - const settings = useSettingsStore(); - - const [errorMessage, setErrorMessage] = useState(null); - const [rawConfigContent, setRawConfigContent] = useState( - JSON.stringify(settings.config, null, 2), - ); - const [isSaving, setIsSaving] = useState(false); - - useEffect(() => { - setRawConfigContent(JSON.stringify(settings.config, null, 2)); - }, [settings.config]); - - const handleSave = async () => { - setIsSaving(true); - setErrorMessage(null); - try { - const validatedConfig = launcherConfigSchema.parse( - JSON.parse(rawConfigContent), - ); - settings.config = validatedConfig; - await settings.save(); - onOpenChange?.(false); - } catch (error) { - setErrorMessage(error instanceof Error ? error.message : String(error)); - } finally { - setIsSaving(false); - } - }; - - return ( - - - - Edit Configuration - - Edit the raw JSON configuration file. - - - -