aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/packages/ui/src/models/instances.ts
diff options
context:
space:
mode:
author苏向夜 <fu050409@163.com>2026-02-26 18:30:57 +0800
committer苏向夜 <fu050409@163.com>2026-02-26 18:30:57 +0800
commitd95ca2801c19a89a2a845f43b6e0133bf4e9be50 (patch)
tree382b6d7c54dd8bafb4af4a063bd8a720611c6b6e /packages/ui/src/models/instances.ts
parentb719d762e5633ea54b96733eab73b616e0779fb2 (diff)
downloadDropOut-d95ca2801c19a89a2a845f43b6e0133bf4e9be50.tar.gz
DropOut-d95ca2801c19a89a2a845f43b6e0133bf4e9be50.zip
refactor: migrate some invokes
Diffstat (limited to 'packages/ui/src/models/instances.ts')
-rw-r--r--packages/ui/src/models/instances.ts135
1 files changed, 0 insertions, 135 deletions
diff --git a/packages/ui/src/models/instances.ts b/packages/ui/src/models/instances.ts
deleted file mode 100644
index f434c7c..0000000
--- a/packages/ui/src/models/instances.ts
+++ /dev/null
@@ -1,135 +0,0 @@
-import { toast } from "sonner";
-import { create } from "zustand";
-import {
- createInstance,
- deleteInstance,
- duplicateInstance,
- getActiveInstance,
- getInstance,
- listInstances,
- setActiveInstance,
- updateInstance,
-} from "@/client";
-import type { Instance } from "@/types";
-
-interface InstancesState {
- // State
- instances: Instance[];
- activeInstance: Instance | null;
-
- // Actions
- refresh: () => Promise<void>;
- create: (name: string) => Promise<Instance | null>;
- delete: (id: string) => Promise<void>;
- update: (instance: Instance) => Promise<void>;
- setActiveInstance: (instance: Instance) => Promise<void>;
- duplicate: (id: string, newName: string) => Promise<Instance | null>;
- getInstance: (id: string) => Promise<Instance | null>;
-}
-
-export const useInstancesStore = create<InstancesState>((set, get) => ({
- // Initial state
- instances: [],
- activeInstance: null,
-
- // Actions
- refresh: async () => {
- const { setActiveInstance } = get();
- try {
- const instances = await listInstances();
- const active = await getActiveInstance();
-
- if (!active && instances.length > 0) {
- // If no active instance but instances exist, set the first one as active
- await setActiveInstance(instances[0]);
- }
-
- set({ instances });
- } catch (e) {
- console.error("Failed to load instances:", e);
- toast.error("Error loading instances");
- }
- },
-
- create: async (name) => {
- const { refresh } = get();
- try {
- const instance = await createInstance(name);
- await refresh();
- toast.success(`Instance "${name}" created successfully`);
- return instance;
- } catch (e) {
- console.error("Failed to create instance:", e);
- toast.error("Error creating instance");
- return null;
- }
- },
-
- delete: async (id) => {
- const { refresh, instances, activeInstance, setActiveInstance } = get();
- try {
- await deleteInstance(id);
- await refresh();
-
- // If deleted instance was active, set another as active
- if (activeInstance?.id === id) {
- if (instances.length > 0) {
- await setActiveInstance(instances[0]);
- } else {
- set({ activeInstance: null });
- }
- }
-
- toast.success("Instance deleted successfully");
- } catch (e) {
- console.error("Failed to delete instance:", e);
- toast.error("Error deleting instance");
- }
- },
-
- update: async (instance) => {
- const { refresh } = get();
- try {
- await updateInstance(instance);
- await refresh();
- toast.success("Instance updated successfully");
- } catch (e) {
- console.error("Failed to update instance:", e);
- toast.error("Error updating instance");
- }
- },
-
- setActiveInstance: async (instance) => {
- try {
- await setActiveInstance(instance.id);
- set({ activeInstance: instance });
- toast.success("Active instance changed");
- } catch (e) {
- console.error("Failed to set active instance:", e);
- toast.error("Error setting active instance");
- }
- },
-
- duplicate: async (id, newName) => {
- const { refresh } = get();
- try {
- const instance = await duplicateInstance(id, newName);
- await refresh();
- toast.success(`Instance duplicated as "${newName}"`);
- return instance;
- } catch (e) {
- console.error("Failed to duplicate instance:", e);
- toast.error("Error duplicating instance");
- return null;
- }
- },
-
- getInstance: async (id) => {
- try {
- return await getInstance(id);
- } catch (e) {
- console.error("Failed to get instance:", e);
- return null;
- }
- },
-}));