aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/packages/ui-new/src/stores
diff options
context:
space:
mode:
Diffstat (limited to 'packages/ui-new/src/stores')
-rw-r--r--packages/ui-new/src/stores/game-store.ts4
-rw-r--r--packages/ui-new/src/stores/instances-store.ts149
-rw-r--r--packages/ui-new/src/stores/settings-store.ts14
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) {