diff options
Diffstat (limited to 'packages/ui-new/src/stores')
| -rw-r--r-- | packages/ui-new/src/stores/game-store.ts | 4 | ||||
| -rw-r--r-- | packages/ui-new/src/stores/instances-store.ts | 149 | ||||
| -rw-r--r-- | packages/ui-new/src/stores/settings-store.ts | 14 |
3 files changed, 9 insertions, 158 deletions
diff --git a/packages/ui-new/src/stores/game-store.ts b/packages/ui-new/src/stores/game-store.ts index 541b386..fa0f9f8 100644 --- a/packages/ui-new/src/stores/game-store.ts +++ b/packages/ui-new/src/stores/game-store.ts @@ -1,6 +1,6 @@ -import { invoke } from "@tauri-apps/api/core"; import { toast } from "sonner"; import { create } from "zustand"; +import { getVersions } from "@/client"; import type { Version } from "@/types/bindings/manifest"; interface GameState { @@ -39,7 +39,7 @@ export const useGameStore = create<GameState>((set, get) => ({ try { // Ask the backend for known versions (optionally scoped to an instance). // The Tauri command `get_versions` is expected to return an array of `Version`. - const versions = await invoke<Version[]>("get_versions", { instanceId }); + const versions = await getVersions(); set({ versions: versions ?? [] }); } catch (e) { console.error("Failed to load versions:", e); diff --git a/packages/ui-new/src/stores/instances-store.ts b/packages/ui-new/src/stores/instances-store.ts deleted file mode 100644 index 4636b79..0000000 --- a/packages/ui-new/src/stores/instances-store.ts +++ /dev/null @@ -1,149 +0,0 @@ -import { invoke } from "@tauri-apps/api/core"; -import { toast } from "sonner"; -import { create } from "zustand"; -import type { Instance } from "../types/bindings/instance"; - -interface InstancesState { - // State - instances: Instance[]; - activeInstanceId: string | null; - - // Computed property - activeInstance: Instance | null; - - // Actions - loadInstances: () => Promise<void>; - createInstance: (name: string) => Promise<Instance | null>; - deleteInstance: (id: string) => Promise<void>; - updateInstance: (instance: Instance) => Promise<void>; - setActiveInstance: (id: string) => Promise<void>; - duplicateInstance: (id: string, newName: string) => Promise<Instance | null>; - getInstance: (id: string) => Promise<Instance | null>; - setInstances: (instances: Instance[]) => void; - setActiveInstanceId: (id: string | null) => void; -} - -export const useInstancesStore = create<InstancesState>((set, get) => ({ - // Initial state - instances: [], - activeInstanceId: null, - - // Computed property - get activeInstance() { - const { instances, activeInstanceId } = get(); - if (!activeInstanceId) return null; - return instances.find((i) => i.id === activeInstanceId) || null; - }, - - // Actions - loadInstances: async () => { - try { - const instances = await invoke<Instance[]>("list_instances"); - const active = await invoke<Instance | null>("get_active_instance"); - - let newActiveInstanceId = null; - if (active) { - newActiveInstanceId = active.id; - } else if (instances.length > 0) { - // If no active instance but instances exist, set the first one as active - await get().setActiveInstance(instances[0].id); - newActiveInstanceId = instances[0].id; - } - - set({ instances, activeInstanceId: newActiveInstanceId }); - } catch (e) { - console.error("Failed to load instances:", e); - toast.error("Error loading instances: " + String(e)); - } - }, - - createInstance: async (name) => { - try { - const instance = await invoke<Instance>("create_instance", { name }); - await get().loadInstances(); - toast.success(`Instance "${name}" created successfully`); - return instance; - } catch (e) { - console.error("Failed to create instance:", e); - toast.error("Error creating instance: " + String(e)); - return null; - } - }, - - deleteInstance: async (id) => { - try { - await invoke("delete_instance", { instanceId: id }); - await get().loadInstances(); - - // If deleted instance was active, set another as active - const { instances, activeInstanceId } = get(); - if (activeInstanceId === id) { - if (instances.length > 0) { - await get().setActiveInstance(instances[0].id); - } else { - set({ activeInstanceId: null }); - } - } - - toast.success("Instance deleted successfully"); - } catch (e) { - console.error("Failed to delete instance:", e); - toast.error("Error deleting instance: " + String(e)); - } - }, - - updateInstance: async (instance) => { - try { - await invoke("update_instance", { instance }); - await get().loadInstances(); - toast.success("Instance updated successfully"); - } catch (e) { - console.error("Failed to update instance:", e); - toast.error("Error updating instance: " + String(e)); - } - }, - - setActiveInstance: async (id) => { - try { - await invoke("set_active_instance", { instanceId: id }); - set({ activeInstanceId: id }); - toast.success("Active instance changed"); - } catch (e) { - console.error("Failed to set active instance:", e); - toast.error("Error setting active instance: " + String(e)); - } - }, - - duplicateInstance: async (id, newName) => { - try { - const instance = await invoke<Instance>("duplicate_instance", { - instanceId: id, - newName, - }); - await get().loadInstances(); - toast.success(`Instance duplicated as "${newName}"`); - return instance; - } catch (e) { - console.error("Failed to duplicate instance:", e); - toast.error("Error duplicating instance: " + String(e)); - return null; - } - }, - - getInstance: async (id) => { - try { - return await invoke<Instance>("get_instance", { instanceId: id }); - } catch (e) { - console.error("Failed to get instance:", e); - return null; - } - }, - - setInstances: (instances) => { - set({ instances }); - }, - - setActiveInstanceId: (id) => { - set({ activeInstanceId: id }); - }, -})); diff --git a/packages/ui-new/src/stores/settings-store.ts b/packages/ui-new/src/stores/settings-store.ts index 52da7fd..0bfc1e1 100644 --- a/packages/ui-new/src/stores/settings-store.ts +++ b/packages/ui-new/src/stores/settings-store.ts @@ -2,6 +2,7 @@ import { convertFileSrc, invoke } from "@tauri-apps/api/core"; import { listen, type UnlistenFn } from "@tauri-apps/api/event"; import { toast } from "sonner"; import { create } from "zustand"; +import { downloadAdoptiumJava } from "@/client"; import type { ModelInfo } from "../types/bindings/assistant"; import type { LauncherConfig } from "../types/bindings/config"; import type { @@ -10,7 +11,6 @@ import type { } from "../types/bindings/downloader"; import type { JavaCatalog, - JavaDownloadInfo, JavaInstallation, JavaReleaseInfo, } from "../types/bindings/java"; @@ -445,13 +445,13 @@ export const useSettingsStore = create<SettingsState>((set, get) => ({ if (!selectedMajorVersion) return; set({ isDownloadingJava: true, javaDownloadStatus: "Starting..." }); try { - const result = await invoke<JavaDownloadInfo>("download_java", { - majorVersion: selectedMajorVersion, - imageType: selectedImageType, - source: selectedDownloadSource, - }); + const result = await downloadAdoptiumJava( + selectedMajorVersion, + selectedImageType, + selectedDownloadSource, + ); set({ - javaDownloadStatus: `Java ${selectedMajorVersion} download started: ${result.fileName}`, + javaDownloadStatus: `Java ${selectedMajorVersion} download started: ${result.path}`, }); toast.success("Download started"); } catch (e) { |