aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/packages/ui/src/models/instance.ts
diff options
context:
space:
mode:
author苏向夜 <46275354+fu050409@users.noreply.github.com>2026-03-29 21:35:34 +0800
committerGitHub <noreply@github.com>2026-03-29 21:35:34 +0800
commit70348cefb7de8c1e044800296a99177309c5a81e (patch)
treeeb0fdfbcc880574e9b386a3f2fc9b3a89489e5b5 /packages/ui/src/models/instance.ts
parentf2f5383a1b615a7493316d558dc55271198e772a (diff)
parent1c115141cc7b676e6a07786594155c3ac293fe34 (diff)
downloadDropOut-70348cefb7de8c1e044800296a99177309c5a81e.tar.gz
DropOut-70348cefb7de8c1e044800296a99177309c5a81e.zip
refactor(ui): full rewrite instance and code struct (#129)
## Summary by Sourcery Refactor the UI to modernize effect handling, routing, and legacy APIs while adding a reusable alert dialog component and cleaning up obsolete stores. New Features: - Introduce a shared SaturnEffect context via ParticleBackground so pages can access the effect without relying on global window APIs. - Add a Base UI–powered alert dialog component for consistent confirmation and warning flows across the app. - Define a central router configuration module with instance routes to standardize page wiring. Bug Fixes: - Ensure SaturnEffect nullish checks are handled safely when forwarding pointer and touch events from the home view. Enhancements: - Rewrite ParticleBackground to manage its own SaturnEffect lifecycle via React state and context instead of global accessors. - Update the home view to use the SaturnEffect hook, simplify pointer/touch handlers, and remove legacy game and release store usage. - Refine layout and accessibility attributes for various form field and label components, including field grouping and error rendering keys. - Simplify sidebar navigation and adjust the user dropdown trigger to work with the updated dropdown menu API. - Wrap the root outlet for the home route with ParticleBackground only on the index path to limit the effect to the intended view. - Clean up imports and code style in radio group and other UI primitives for consistency. Chores: - Remove deprecated UI stores and utility modules that are no longer used with the new architecture. - Add changeset entries documenting the Saturn effect refactor, ParticleBackground rewrite, and removal of legacy store code.
Diffstat (limited to 'packages/ui/src/models/instance.ts')
-rw-r--r--packages/ui/src/models/instance.ts23
1 files changed, 10 insertions, 13 deletions
diff --git a/packages/ui/src/models/instance.ts b/packages/ui/src/models/instance.ts
index e1eb7c1..8c108c1 100644
--- a/packages/ui/src/models/instance.ts
+++ b/packages/ui/src/models/instance.ts
@@ -20,13 +20,16 @@ interface InstanceState {
activeInstance: Instance | null;
refresh: () => Promise<void>;
- create: (name: string) => Promise<Instance | null>;
+ create: (name: string) => Promise<Instance>;
delete: (id: string) => Promise<void>;
update: (instance: Instance) => Promise<void>;
setActiveInstance: (instance: Instance) => Promise<void>;
duplicate: (id: string, newName: string) => Promise<Instance | null>;
exportArchive: (id: string, archivePath: string) => Promise<void>;
- importArchive: (archivePath: string, newName?: string) => Promise<Instance | null>;
+ importArchive: (
+ archivePath: string,
+ newName?: string,
+ ) => Promise<Instance | null>;
repair: () => Promise<void>;
get: (id: string) => Promise<Instance | null>;
}
@@ -61,17 +64,11 @@ export const useInstanceStore = create<InstanceState>((set, get) => ({
create: async (name) => {
const { refresh } = get();
- try {
- const instance = await createInstance(name);
- await setActiveInstanceCommand(instance.id);
- await refresh();
- toast.success(`Instance "${name}" created successfully`);
- return instance;
- } catch (e) {
- console.error("Failed to create instance:", e);
- toast.error(String(e));
- return null;
- }
+ const instance = await createInstance(name);
+ await setActiveInstanceCommand(instance.id);
+ await refresh();
+ toast.success(`Instance "${name}" created successfully`);
+ return instance;
},
delete: async (id) => {